diff --git a/src/routes/dumpDatabase.ts b/src/routes/dumpDatabase.ts index 67fc7c8..25a9e3a 100644 --- a/src/routes/dumpDatabase.ts +++ b/src/routes/dumpDatabase.ts @@ -105,8 +105,7 @@ export default async function dumpDatabase(req: Request, res: Response, showPage return; } - const now = Date.now(); - updateQueued ||= now - lastUpdate > MILLISECONDS_BETWEEN_DUMPS; + updateQueueTime(); res.status(200) @@ -114,8 +113,11 @@ export default async function dumpDatabase(req: Request, res: Response, showPage res.send(`${styleHeader}

SponsorBlock database dumps

${licenseHeader}

How this works

- Send a request to https://sponsor.ajay.app/database.json, or visit this page to trigger the database dump to run. - Then, you can download the csv files below, or use the links returned from the JSON request. + + Send a request to https://sponsor.ajay.app/database.json, or visit this page to get a list of urls and the update status database dump to run. + Then, you can download the csv files below, or use the links returned from the JSON request. + A dump will also be triggered by making a request to one of these urls. +

Links

@@ -152,6 +154,37 @@ export default async function dumpDatabase(req: Request, res: Response, showPage }) } + await queueDump(); +} + +export async function redirectLink(req: Request, res: Response): Promise { + if (!config?.dumpDatabase?.enabled) { + res.status(404).send("Database dump is disabled"); + return; + } + if (!config.postgres) { + res.status(404).send("Not supported on this instance"); + return; + } + + const file = latestDumpFiles.find((value) => `/database/${value.tableName}.csv` === req.path); + + updateQueueTime(); + + if (file) { + res.redirect("/download/" + file.fileName); + } else { + res.status(404).send(); + } + + await queueDump(); +} + +function updateQueueTime(): void { + updateQueued ||= Date.now() - lastUpdate > MILLISECONDS_BETWEEN_DUMPS; +} + +async function queueDump(): Promise { if (updateQueued) { lastUpdate = Date.now(); @@ -173,14 +206,4 @@ export default async function dumpDatabase(req: Request, res: Response, showPage updateQueued = false; } -} - -export async function redirectLink(req: Request, res: Response): Promise { - const file = latestDumpFiles.find((value) => `/database/${value.tableName}.csv` === req.path); - - if (file) { - res.redirect("/download/" + file.fileName); - } else { - res.status(404).send(); - } } \ No newline at end of file