From 43ab13e12643b1e09b0d1b05731f24d335504fa1 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Fri, 16 May 2025 23:36:56 +0300 Subject: [PATCH] refactor(server/session): better error management --- apps/server/src/routes/session_parser.ts | 47 ++++++++++++++++-------- apps/server/src/services/log.ts | 2 +- 2 files changed, 32 insertions(+), 17 deletions(-) diff --git a/apps/server/src/routes/session_parser.ts b/apps/server/src/routes/session_parser.ts index f2ddea8d8..008da0e87 100644 --- a/apps/server/src/routes/session_parser.ts +++ b/apps/server/src/routes/session_parser.ts @@ -2,34 +2,49 @@ import sql from "../services/sql.js"; import session, { Store } from "express-session"; import sessionSecret from "../services/session_secret.js"; import config from "../services/config.js"; +import log from "../services/log.js"; class SQLiteSessionStore extends Store { get(sid: string, callback: (err: any, session?: session.SessionData | null) => void): void { - const data = sql.getValue(/*sql*/`SELECT data FROM sessions WHERE id = ?`, sid); - let session = null; - if (data) { - session = JSON.parse(data); + try { + const data = sql.getValue(/*sql*/`SELECT data FROM sessions WHERE id = ?`, sid); + let session = null; + if (data) { + session = JSON.parse(data); + } + return callback(null, session); + } catch (e: unknown) { + log.error(e); + return callback(e); } - return callback(null, session); } set(id: string, session: session.SessionData, callback?: (err?: any) => void): void { - const expires = Date.now() + 3600000; // Session expiration time (1 hour from now) - const data = JSON.stringify(session); + try { + const expires = Date.now() + 3600000; // Session expiration time (1 hour from now) + const data = JSON.stringify(session); - sql.upsert("sessions", "id", { - id, - expires, - data - }); - callback?.(); + sql.upsert("sessions", "id", { + id, + expires, + data + }); + callback?.(); + } catch (e) { + log.error(e); + return callback?.(e); + } } destroy(sid: string, callback?: (err?: any) => void): void { - console.log("Destroy ", sid); - sql.execute(/*sql*/`DELETE FROM sessions WHERE id = ?`, sid); - callback?.(); + try { + sql.execute(/*sql*/`DELETE FROM sessions WHERE id = ?`, sid); + callback?.(); + } catch (e) { + log.error(e); + callback?.(e); + } } } diff --git a/apps/server/src/services/log.ts b/apps/server/src/services/log.ts index b84018fbf..f5598b7f6 100644 --- a/apps/server/src/services/log.ts +++ b/apps/server/src/services/log.ts @@ -69,7 +69,7 @@ function info(message: string | Error) { log(message); } -function error(message: string | Error) { +function error(message: string | Error | unknown) { log(`ERROR: ${message}`); }