import "dotenv/config"; import express from "express"; import { BACKUP_AUTO_RESTORE, configCheck, SERVER_PORT } 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"; dataSource.initialize().then(async () => { if ((BACKUP_AUTO_RESTORE as "true" | "false") == "true" && (await dataSource.createQueryRunner().hasTable("user"))) { await BackupHelper.autoRestoreBackup().catch((err) => { console.log(`${new Date().toISOString()}: failed auto-restoring database`, err); }); } }); const app = express(); import router from "./routes/index"; router(app); app.listen(process.env.NODE_ENV ? SERVER_PORT : 5000, () => { console.log(`${new Date().toISOString()}: listening on port ${process.env.NODE_ENV ? SERVER_PORT : 5000}`); }); import schedule from "node-schedule"; import RefreshCommandHandler from "./command/refreshCommandHandler"; const job = schedule.scheduleJob("0 0 * * *", async () => { console.log(`${new Date().toISOString()}: running Cron`); await RefreshCommandHandler.deleteExpired(); await BackupHelper.createBackupOnInterval(); });