Add redirects

This commit is contained in:
Ajay Ramachandran
2021-04-19 20:54:52 -04:00
parent dad4fbca75
commit 19058d3760
2 changed files with 18 additions and 4 deletions

View File

@@ -26,7 +26,7 @@ import {userCounter} from './middleware/userCounter';
import {loggerMiddleware} from './middleware/logger';
import {corsMiddleware} from './middleware/cors';
import {rateLimitMiddleware} from './middleware/requestRateLimit';
import dumpDatabase from './routes/dumpDatabase';
import dumpDatabase, {redirectLink} from './routes/dumpDatabase';
export function createServer(callback: () => void) {
@@ -131,6 +131,7 @@ function setupRoutes(app: Express) {
if (config.postgres) {
app.get('/database', (req, res) => dumpDatabase(req, res, true));
app.get('/database.json', (req, res) => dumpDatabase(req, res, false));
app.get('/database/*', redirectLink)
} else {
app.get('/database.db', function (req: Request, res: Response) {
res.sendFile("./databases/sponsorTimes.db", {root: "./"});

View File

@@ -51,6 +51,7 @@ if (tables.length === 0) {
}
let lastUpdate = 0;
let updateQueued = false;
function removeOutdatedDumps(exportPath: string): Promise<void> {
return new Promise((resolve, reject) => {
@@ -105,7 +106,7 @@ export default async function dumpDatabase(req: Request, res: Response, showPage
}
const now = Date.now();
const updateQueued = now - lastUpdate > MILLISECONDS_BETWEEN_DUMPS;
updateQueued ||= now - lastUpdate > MILLISECONDS_BETWEEN_DUMPS;
res.status(200)
@@ -128,7 +129,7 @@ export default async function dumpDatabase(req: Request, res: Response, showPage
return `
<tr>
<td>${item.tableName}</td>
<td><a href="/database/${item.fileName}">${item.fileName}</a></td>
<td><a href="/database/${item.tableName}">${item.tableName}</a></td>
</tr>
`;
}).join('')}
@@ -144,7 +145,7 @@ export default async function dumpDatabase(req: Request, res: Response, showPage
links: latestDumpFiles.map((item:any) => {
return {
table: item.tableName,
url: `/database/${item.fileName}`,
url: `/database/${item.tableName}`,
size: item.fileSize,
};
}),
@@ -169,5 +170,17 @@ export default async function dumpDatabase(req: Request, res: Response, showPage
});
}
latestDumpFiles = [...dumpFiles];
updateQueued = false;
}
}
export async function redirectLink(req: Request, res: Response): Promise<void> {
const file = latestDumpFiles.find((value) => "/database/" + value.tableName === req.path);
if (file) {
res.redirect("/download/" + file.fileName);
} else {
res.status(404).send();
}
}