ff-admin-server/src/index.ts

51 lines
1.6 KiB
TypeScript

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();
});