dev to main - v0.1.2 #4
55
src/app.ts
55
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( "<TODAY>" )
|
||||
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();
|
||||
|
||||
|
||||
@@ -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( "<TODAY>" )
|
||||
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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user