diff --git a/pkgs/api/_dbs.ts b/pkgs/api/_dbs.ts index cdceee5..14ef109 100644 --- a/pkgs/api/_dbs.ts +++ b/pkgs/api/_dbs.ts @@ -10,7 +10,7 @@ export const _ = { async api() { const ctx = apiContext(this); const { req, res } = ctx; - if (typeof g.db !== "undefined") { + if (typeof g.db !== "undefined" && g.db !== null) { if (req.params._ === "check") { return { mode: "encrypted" }; } @@ -30,6 +30,9 @@ export const _ = { res.sendStatus(500); res.send('{status: "unauthorized"}'); } + } else { + res.status(503); + res.send('{"status": "database_unavailable", "message": "Database connection not available"}'); } }, }; diff --git a/pkgs/index.ts b/pkgs/index.ts index b68fc42..334769c 100644 --- a/pkgs/index.ts +++ b/pkgs/index.ts @@ -65,8 +65,10 @@ await createLogger(); if (g.db) { try { await g.db.$connect(); + g.log.info("Database connected successfully"); } catch (e) { - console.error(e); + g.log.error("Failed to connect to database:", e); + g.db = null; } } diff --git a/pkgs/utils/prisma.ts b/pkgs/utils/prisma.ts index 44cc793..bab6891 100644 --- a/pkgs/utils/prisma.ts +++ b/pkgs/utils/prisma.ts @@ -28,7 +28,8 @@ export const preparePrisma = async () => { }) as Upsert, }; } catch (e) { - console.log("Prisma not initialized", e); + console.error("Failed to initialize Prisma:", e); + g.db = null; } } diff --git a/pkgs/utils/query.ts b/pkgs/utils/query.ts index fab9009..39e0a6c 100644 --- a/pkgs/utils/query.ts +++ b/pkgs/utils/query.ts @@ -13,6 +13,10 @@ export type DBArg = { }; export const execQuery = async (args: DBArg, prisma: any) => { + if (!prisma) { + throw new Error("Database connection not available"); + } + const { table, action, params } = args; if (action === "batch_upsert") {