From 322d5161d79da44811c953ca709baf5bb8264657 Mon Sep 17 00:00:00 2001 From: Martin <2026226+martin-mfg@users.noreply.github.com> Date: Sat, 7 Mar 2026 10:34:14 +0100 Subject: [PATCH] configurable intervals for repeating requests (#120) --- apps/backend/src/common/database.js | 16 ++++++++-------- apps/backend/src/repeatRequests.js | 13 +++++++++---- 2 files changed, 17 insertions(+), 12 deletions(-) diff --git a/apps/backend/src/common/database.js b/apps/backend/src/common/database.js index 42fc50e3..e76c3109 100644 --- a/apps/backend/src/common/database.js +++ b/apps/backend/src/common/database.js @@ -71,16 +71,16 @@ export async function storeRequest(req) { } /** - * Deletes all requests older than 8 days from the database. + * Deletes all requests older than the specified time from the database. */ -export async function deleteOldRequests() { +export async function deleteOldRequests(interval) { if (!pool) { return; } const deleteQuery = ` DELETE FROM requests - WHERE user_requested_at < NOW() - INTERVAL '8 days' + WHERE user_requested_at < NOW() - INTERVAL '${interval}' `; try { let result = await pool.query(deleteQuery); @@ -95,11 +95,11 @@ export async function deleteOldRequests() { } /** - * Fetches all requests which are between 11 hours and 8 days old. + * Fetches all requests which are between minInterval and maxInterval old. * - * @returns {Promise} Array of all requests between 11 hours and 8 days old. + * @returns {Promise} Array of all requests between minInterval and maxInterval old. */ -export async function getRecentRequests() { +export async function getRecentRequests(minInterval, maxInterval) { if (!pool) { return []; } @@ -107,8 +107,8 @@ export async function getRecentRequests() { const query = ` SELECT request FROM requests - WHERE requested_at >= NOW() - INTERVAL '8 days' - AND requested_at < NOW() - INTERVAL '11 hours' + WHERE requested_at >= NOW() - INTERVAL '${maxInterval}' + AND requested_at < NOW() - INTERVAL '${minInterval}' ORDER BY requested_at ASC `; let rows; diff --git a/apps/backend/src/repeatRequests.js b/apps/backend/src/repeatRequests.js index 14c6a533..29cddf31 100644 --- a/apps/backend/src/repeatRequests.js +++ b/apps/backend/src/repeatRequests.js @@ -48,16 +48,21 @@ async function makeRequests(urls, poolSize) { } /** - * Repeats requests made in the last 8 days, excluding those made in the last 11 hours. + * Repeats requests made in the last 8 days (or configured interval), excluding those made in the last 11 hours (or configured interval). */ export async function repeatRecentRequests() { if (!pool) { console.error("Postgres pool is not initialized."); return; } - - await deleteOldRequests(); - const urls = await getRecentRequests(); + let maxInterval = process.env.DELETE_AFTER_HOURS + ? `${process.env.DELETE_AFTER_HOURS} hours` + : "8 days"; + let minInterval = process.env.UPDATE_AFTER_HOURS + ? `${process.env.UPDATE_AFTER_HOURS} hours` + : "11 hours"; + await deleteOldRequests(maxInterval); + const urls = await getRecentRequests(minInterval, maxInterval); if (urls.length === 0) { console.log("No recent requests found."); } else {