fix: add sessions table to Drizzle schema + auto-create at startup

This commit is contained in:
root
2026-07-29 20:04:15 +02:00
parent 4e0861df71
commit a569bba5e1
3 changed files with 29 additions and 0 deletions
+21
View File
@@ -18,6 +18,26 @@ if (Number.isNaN(port) || port <= 0) {
throw new Error(`Invalid PORT value: "${rawPort}"`);
}
async function ensureSessionsTable(): Promise<void> {
try {
const exists = await db.execute(
sql`SELECT EXISTS (SELECT FROM information_schema.tables WHERE table_name = 'sessions')`,
);
const rows = exists.rows as [{ exists: boolean }];
if (rows[0]?.exists) return;
await db.execute(
sql`CREATE TABLE "sessions" ("sid" varchar NOT NULL, "sess" json NOT NULL, "expire" timestamp(6) NOT NULL)`,
);
await db.execute(
sql`ALTER TABLE "sessions" ADD PRIMARY KEY ("sid")`,
);
logger.info("Sessions table created");
} catch (err) {
logger.error({ err }, "Failed to ensure sessions table");
}
}
async function seedAdminUser(): Promise<void> {
try {
const [row] = await db.select({ count: sql<number>`count(*)::int` }).from(usersTable);
@@ -49,5 +69,6 @@ app.listen(port, (err) => {
}
logger.info({ port }, "Server listening");
ensureSessionsTable();
seedAdminUser();
});