fix database connection error handling to prevent app crashes
- Add proper error handling in database connection attempts - Set g.db to null when connection fails to prevent subsequent crashes - Add null check in execQuery to throw meaningful error when DB unavailable - Improve API endpoint to return 503 status when database is unavailable - Enhanced logging for better debugging of connection issues 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
parent
a09cf17451
commit
74a70e99ca
|
|
@ -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"}');
|
||||
}
|
||||
},
|
||||
};
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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") {
|
||||
|
|
|
|||
Loading…
Reference in New Issue