From e9ead4e7bf19afe30ffc1c3995cfc760e3030124 Mon Sep 17 00:00:00 2001 From: chiko Date: Sun, 26 Oct 2025 14:07:28 +0100 Subject: [PATCH] Moved Function to get a Title and Body of a Event to the Event Class. --- src/app.ts | 57 +++-------------------------------- src/component/event/events.ts | 47 +++++++++++++++++++++++++++-- 2 files changed, 50 insertions(+), 54 deletions(-) diff --git a/src/app.ts b/src/app.ts index bf8b110..0ac2b5a 100644 --- a/src/app.ts +++ b/src/app.ts @@ -1,7 +1,6 @@ -import { TEventType, type TEvent } from "./component/event"; import { db } from "./sql"; import { Event, type TEventEntityNew, type TGetEventsOptions } from "./component/event/events"; -import { createPlaceholders, getTsNow, pad_l2 } from "./util"; +import { createPlaceholders, getTsNow } from "./util"; import { sendNotification } from "./sendNotification"; import minimist from "minimist"; const argv = minimist(process.argv.slice(2)) @@ -11,32 +10,6 @@ console.dir({argv}) const TODAY = getTsNow(); console.dir({TODAY}); -function getBodyFromEvent( event: TEvent): string { - const body = [ - `Title: ${event.title}`, - `Date: ${event.date_at}`, - `Time: ${event.time_start}`, - `Type: ${ TEventType[ event.event_type ] }`, - `Location: ${event.location}`, - `By: ${event.posted_by}`, - `Link: ${event.link}`, - ].join("\n"); - return body; -} - -function isEventToday (event: Event | TEvent ) { - const now = getTsNow(); - const [year, month, day] = event.date_at.split("-") - if ( - year == String(now.year) && - month == pad_l2( String(now.month) ) && - day == pad_l2( String( now.day ) ) - ) { - return true; - } - return false; -} - async function events_update_db() { const events_fetched_currentMonth = await Event.fetch_events( TODAY.year, TODAY.month , -120 ); console.log("events_fetched_currentMonth.length: " + events_fetched_currentMonth.length ); @@ -116,27 +89,9 @@ async function events_check_for_notification() { }); for ( const ev of list_of_events ) { console.log("loop list_of_events - ev: " + [ ev.uid, ev.title, ev.date_at, "notification: " + ev.notification ].join( ", " ) ); - const body = getBodyFromEvent( ev ); - // console.log("loop list_of_events - ev 'body': " + body ); - const type_of_notification = ( (event: Event) => { - switch ( event.notification ) { - case "new": - return "New"; - case "changed": - return "Changed"; - case "removed": - return "Removed"; - default: - return null; - } - } ) ( ev ); - const title_prefix_arr = []; - if ( type_of_notification ) title_prefix_arr.push( "<" + type_of_notification + ">" ); - if ( isEventToday( ev ) ) title_prefix_arr.push( "" ) - const title = `${title_prefix_arr.length >= 1 ? ( title_prefix_arr.join(" " ) + " - ") : "" }${ev.title} (${ TEventType[ ev.event_type ] })`; - console.log("loop list_of_events - ev 'title': " + title ); - await sendNotification( title, body); - if( ev.notification == "removed" ) { + console.log("loop list_of_events - ev 'title': " + ev.get_title() ); + await sendNotification( ev.get_title(), ev.get_body() ); + if ( ev.notification == "removed" ) { ev.set_deleted( db ); } ev.set_notification("done", db); @@ -145,10 +100,8 @@ async function events_check_for_notification() { async function main ( ) { console.log("Excecuting main()"); - await events_update_db(); await events_check_for_notification(); }; -main(); - +main(); \ No newline at end of file diff --git a/src/component/event/events.ts b/src/component/event/events.ts index c9d9ce1..2954946 100644 --- a/src/component/event/events.ts +++ b/src/component/event/events.ts @@ -1,6 +1,6 @@ import { Database } from "bun:sqlite"; -import type { TEvent } from "./event.types"; -import { transformArray } from "../../util"; +import { TEventType, type TEvent } from "./event.types"; +import { getTsNow, pad_l2, transformArray } from "../../util"; const BASE_URL = "https://77th-jsoc.com/service.php?action=get_events"; @@ -176,4 +176,47 @@ export class Event implements TEventEntity { }); return this.syncWithDb( db ); } + get_title() { + const type_of_notification = ( (event: Event) => { + switch ( event.notification ) { + case "new": + return "New"; + case "changed": + return "Changed"; + case "removed": + return "Removed"; + default: + return null; + } + } ) ( this ); + const title_prefix_arr = []; + if ( type_of_notification ) title_prefix_arr.push( "<" + type_of_notification + ">" ); + if ( this.isEventToday() ) title_prefix_arr.push( "" ) + return `${title_prefix_arr.length >= 1 ? ( title_prefix_arr.join(" " ) + " - ") : "" }${this.title} (${ TEventType[ this.event_type ] })`; + } + get_body() { + const body = [ + `Title: ${this.title}`, + `Date: ${this.date_at}`, + `Time: ${this.time_start}`, + `Type: ${ TEventType[ this.event_type ] }`, + `Location: ${this.location}`, + `By: ${this.posted_by}`, + `Link: ${this.link}`, + ].join("\n"); + return body; + } + + isEventToday ( ) { + const now = getTsNow(); + const [year, month, day] = this.date_at.split("-") + if ( + year == String(now.year) && + month == pad_l2( String(now.month) ) && + day == pad_l2( String( now.day ) ) + ) { + return true; + } + return false; + } } \ No newline at end of file