diff --git a/server/environment.ts b/server/environment.ts index b0f560d7..ccfdc146 100644 --- a/server/environment.ts +++ b/server/environment.ts @@ -7,6 +7,7 @@ const environmentSchema = z.object({ SAVE_LOGS: z.string().transform((val) => val === "true"), PORT: z.string(), CONFIG_PATH: z.string(), + API_VERSION: z.string(), }); const environment = { @@ -15,6 +16,7 @@ const environment = { SAVE_LOGS: (process.env.SAVE_LOGS as string) || "false", PORT: (process.env.PORT as string) || "3000", CONFIG_PATH: process.env.CONFIG_PATH as string, + API_VERSION: process.env.API_VERSION as string, }; const parsedConfig = environmentSchema.safeParse(environment); diff --git a/server/index.ts b/server/index.ts index 39288fcc..826551fc 100644 --- a/server/index.ts +++ b/server/index.ts @@ -6,20 +6,31 @@ import logger from "@server/logger"; import helmet from "helmet"; import cors from "cors"; import unauth from "@server/routers/unauth"; +import Database from 'better-sqlite3'; const dev = environment.ENVIRONMENT !== "prod"; const app = next({ dev }); const handle = app.getRequestHandler(); - const port = environment.PORT; -app.prepare().then(() => { - const server = express(); +let db: Database.Database; +app.prepare().then(() => { + // Open the SQLite database connection + db = new Database(`${environment.CONFIG_PATH}/db/db.sqlite`, { verbose: console.log }); + + const server = express(); server.use(helmet()); server.use(cors()); - const prefix = `/api`; + const prefix = `/api/${environment.API_VERSION}`; + + // Middleware to attach db to req object + server.use((req: Request & { db?: Database.Database }, res: Response, next) => { + req.db = db; + next(); + }); + server.use(prefix, express.json(), unauth); server.all("*", (req: Request, res: Response) => { @@ -34,3 +45,8 @@ app.prepare().then(() => { logger.info(`Server is running on http://localhost:${port}`); }); }); + +process.on('SIGINT', () => { + db.close(); + process.exit(0); +}); \ No newline at end of file