import "dotenv/config"; import "./handlebars.config"; import express from "express"; import { configCheck } from "./env.defaults"; configCheck(); import { PermissionObject } from "./type/permissionTypes"; declare global { namespace Express { export interface Request { userId: string; username: string; isOwner: boolean; permissions: PermissionObject; isPWA: boolean; isWebApiRequest: boolean; } } } import { dataSource } from "./data-source"; import BackupHelper from "./helpers/backupHelper"; import SettingHelper from "./helpers/settingsHelper"; dataSource.initialize().then(async () => { if (await dataSource.createQueryRunner().hasTable("user")) { await BackupHelper.autoRestoreBackup().catch((err) => { console.log(`${new Date().toISOString()}: failed auto-restoring database`, err); }); } await SettingHelper.configure(); MailHelper.initialize(); }); const app = express(); import router from "./routes/index"; router(app); app.listen(process.env.NODE_ENV ? process.env.SERVER_PORT ?? 5000 : 5000, () => { console.log( `${new Date().toISOString()}: listening on port ${process.env.NODE_ENV ? process.env.SERVER_PORT ?? 5000 : 5000}` ); }); import schedule from "node-schedule"; import RefreshCommandHandler from "./command/refreshCommandHandler"; import MailHelper from "./helpers/mailHelper"; const job = schedule.scheduleJob("0 0 * * *", async () => { console.log(`${new Date().toISOString()}: running Cron`); await RefreshCommandHandler.deleteExpired(); await BackupHelper.createBackupOnInterval(); });