import GameSource from "./GameSource"; import GoogleCalendar from "./GoogleCalendar"; import env from "dotenv"; import cron from 'node-cron'; env.config(); class App { gameSource: GameSource; googleToken: string; googleCalendar: GoogleCalendar; constructor() { this.gameSource = new GameSource(); this.googleCalendar = new GoogleCalendar(); } async startCronJob() { console.log("START Haifa Reminder"); const newGamesAdded = []; await this.googleCalendar.init(); try { const games = await app.gameSource.getGamesFromHaifa(); for (const game of games) { const isDuplicateEvent = await this.googleCalendar.isDuplicateEvent( game.start.dateTime, game.end.dateTime, game.summary ); console.log(game) if (!isDuplicateEvent) { newGamesAdded.push(game); console.log("Event does not exist"); await this.googleCalendar.updateNewEvent([game]); } else { console.log("Event already exists"); } } if(newGamesAdded.length > 0) { console.log("New games added:", newGamesAdded); } else { console.log("No new games was Added!"); } } catch (error) { console.error("Error in cron job:", error.message); } } } const app = new App(); cron.schedule('* * * * *', () => { console.log('Running startCronJob at 7:00 AM Jerusalem time'); console.log("START CRON JOB"); app.startCronJob().catch((error) => { console.error("Error in scheduled cron job:", error.message); }); }, { scheduled: true, timezone: "Asia/Jerusalem" });