diff --git a/src/app.ts b/src/app.ts index 026f74c..5bc2b2c 100644 --- a/src/app.ts +++ b/src/app.ts @@ -129,7 +129,8 @@ function setupRoutes(app: Express) { app.post('/api/segmentShift', postSegmentShift); if (config.postgres) { - app.get('/database', dumpDatabase); + app.get('/database', (req, res) => dumpDatabase(req, res, true)); + app.get('/database.json', (req, res) => dumpDatabase(req, res, false)); } else { app.get('/database.db', function (req: Request, res: Response) { res.sendFile("./databases/sponsorTimes.db", {root: "./"}); diff --git a/src/routes/dumpDatabase.ts b/src/routes/dumpDatabase.ts index fb8363d..0d0ab02 100644 --- a/src/routes/dumpDatabase.ts +++ b/src/routes/dumpDatabase.ts @@ -32,12 +32,14 @@ const tables = [{ name: "vipUsers" }]; -const links: string = tables.map((table) => `

${table.name}.csv

`) +const links: string[] = tables.map((table) => `/database/${table.name}.csv`); + +const linksHTML: string = tables.map((table) => `

${table.name}.csv

`) .reduce((acc, url) => acc + url, ""); let lastUpdate = 0; -export default function dumpDatabase(req: Request, res: Response) { +export default function dumpDatabase(req: Request, res: Response, showPage: boolean) { if (!config.postgres) { res.status(404).send("Not supported on this instance"); return; @@ -46,9 +48,19 @@ export default function dumpDatabase(req: Request, res: Response) { const now = Date.now(); const updateQueued = now - lastUpdate > ONE_MINUTE; - res.status(200).send(`${styleHeader} -

SponsorBlock database dumps

${licenseHeader}${links}
- ${updateQueued ? `Update queued.` : ``} Last updated: ${lastUpdate ? new Date(lastUpdate).toUTCString() : `Unknown`}`); + res.status(200) + + if (showPage) { + res.send(`${styleHeader} +

SponsorBlock database dumps

${licenseHeader}${linksHTML}
+ ${updateQueued ? `Update queued.` : ``} Last updated: ${lastUpdate ? new Date(lastUpdate).toUTCString() : `Unknown`}`); + } else { + res.send({ + lastUpdated: lastUpdate, + updateQueued, + links + }) + } if (updateQueued) { lastUpdate = Date.now();