dev to main - v0.1.2 #4

Merged
chiko merged 7 commits from dev into main 2025-10-26 14:22:06 +00:00
2 changed files with 50 additions and 54 deletions
Showing only changes of commit e9ead4e7bf - Show all commits

View File

@@ -1,7 +1,6 @@
import { TEventType, type TEvent } from "./component/event";
import { db } from "./sql"; import { db } from "./sql";
import { Event, type TEventEntityNew, type TGetEventsOptions } from "./component/event/events"; 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 { sendNotification } from "./sendNotification";
import minimist from "minimist"; import minimist from "minimist";
const argv = minimist(process.argv.slice(2)) const argv = minimist(process.argv.slice(2))
@@ -11,32 +10,6 @@ console.dir({argv})
const TODAY = getTsNow(); const TODAY = getTsNow();
console.dir({TODAY}); 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() { async function events_update_db() {
const events_fetched_currentMonth = await Event.fetch_events( TODAY.year, TODAY.month , -120 ); const events_fetched_currentMonth = await Event.fetch_events( TODAY.year, TODAY.month , -120 );
console.log("events_fetched_currentMonth.length: " + events_fetched_currentMonth.length ); console.log("events_fetched_currentMonth.length: " + events_fetched_currentMonth.length );
@@ -116,26 +89,8 @@ async function events_check_for_notification() {
}); });
for ( const ev of list_of_events ) { 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( ", " ) ); 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 'title': " + ev.get_title() );
// console.log("loop list_of_events - ev 'body': " + body ); await sendNotification( ev.get_title(), ev.get_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" ) { if ( ev.notification == "removed" ) {
ev.set_deleted( db ); ev.set_deleted( db );
} }
@@ -145,10 +100,8 @@ async function events_check_for_notification() {
async function main ( ) { async function main ( ) {
console.log("Excecuting main()"); console.log("Excecuting main()");
await events_update_db(); await events_update_db();
await events_check_for_notification(); await events_check_for_notification();
}; };
main(); main();

View File

@@ -1,6 +1,6 @@
import { Database } from "bun:sqlite"; import { Database } from "bun:sqlite";
import type { TEvent } from "./event.types"; import { TEventType, type TEvent } from "./event.types";
import { transformArray } from "../../util"; import { getTsNow, pad_l2, transformArray } from "../../util";
const BASE_URL = "https://77th-jsoc.com/service.php?action=get_events"; 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 ); 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;
}
} }