From 87a79bffd90daa4eec0d802308fc129d3eb05f7c Mon Sep 17 00:00:00 2001 From: martin-mfg <2026226+martin-mfg@users.noreply.github.com> Date: Sat, 21 Jun 2025 15:24:04 +0000 Subject: [PATCH] fix DB initialization --- src/common/utils.js | 26 ++++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/src/common/utils.js b/src/common/utils.js index 4bcb6efd..ac514913 100644 --- a/src/common/utils.js +++ b/src/common/utils.js @@ -264,18 +264,32 @@ export async function storeRequest(req) { if (!pool) { return; } - const query = ` - CREATE TABLE IF NOT EXISTS requests ( - request TEXT PRIMARY KEY, - requested_at TIMESTAMP NOT NULL DEFAULT now() - ); + const insertQuery = ` INSERT INTO requests (request, requested_at) VALUES ($1, NOW()) ON CONFLICT (request) DO UPDATE SET requested_at = EXCLUDED.requested_at `; - await pool.query(query, [req.url]); + + try { + await pool.query(insertQuery, [req.url]); + } catch (err) { + // Check for undefined_table error (SQLSTATE 42P01) + if (err.code === "42P01") { + const createTableQuery = ` + CREATE TABLE IF NOT EXISTS requests ( + request TEXT PRIMARY KEY, + requested_at TIMESTAMP NOT NULL DEFAULT now() + ) + `; + await pool.query(createTableQuery); + // Retry the insert after creating the table + await pool.query(insertQuery, [req.url]); + } else { + throw err; // Re-throw if it's some other error + } + } } /**