import { createServer } from "node:http"; import os from "node:os"; import createApp from "./app.js"; import { dbCleanup } from "./db/dbCleanup.controller.js"; import { createLogger } from "./logger/logger.controller.js"; import { monitorReleaseChanges } from "./opendock/openDockRreleaseMonitor.utils.js"; import { opendockSocketMonitor } from "./opendock/opendockSocketMonitor.utils.js"; import { connectProdSql } from "./prodSql/prodSqlConnection.controller.js"; import { setupSocketIORoutes } from "./socket.io/serverSetup.js"; import { createCronJob } from "./utils/croner.utils.js"; const port = Number(process.env.PORT) || 3000; const start = async () => { const log = createLogger({ module: "system", subModule: "main start" }); // triggering long lived processes connectProdSql(); // start long live processes setTimeout(() => { monitorReleaseChanges(); // this is od monitoring the db for all new releases opendockSocketMonitor(); createCronJob("JobAuditLogCleanUp", "* 0 5 * * * *", () => dbCleanup("jobs", 30), ); createCronJob("logsCleanup", "* 15 5 * * * *", () => dbCleanup("logs", 30)); createCronJob("opendockAptCleanup", "* 30 5 * * * *", () => dbCleanup("opendockApt", 90), ); }, 5 * 1000); const { app, baseUrl } = await createApp(); const server = createServer(app); setupSocketIORoutes(baseUrl, server); server.listen(port, async () => { log.info( `Listening on http://${os.hostname()}:${port}${baseUrl}, logging in ${process.env.LOG_LEVEL}, current ENV ${process.env.NODE_ENV ? process.env.NODE_ENV : "development"}`, ); }); }; start();