configurable intervals for repeating requests (#120)

This commit is contained in:
Martin
2026-03-07 10:34:14 +01:00
committed by GitHub
parent 84d5fd639c
commit 322d5161d7
2 changed files with 17 additions and 12 deletions
+8 -8
View File
@@ -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<string[]>} Array of all requests between 11 hours and 8 days old.
* @returns {Promise<string[]>} 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;
+9 -4
View File
@@ -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 {