Serve database csv from node

This commit is contained in:
Ajay Ramachandran
2021-12-04 22:55:36 -05:00
parent e3042f7623
commit 4964c72e71
2 changed files with 8 additions and 5 deletions

View File

@@ -27,7 +27,7 @@ import { loggerMiddleware } from "./middleware/logger";
import { corsMiddleware } from "./middleware/cors";
import { apiCspMiddleware } from "./middleware/apiCsp";
import { rateLimitMiddleware } from "./middleware/requestRateLimit";
import dumpDatabase, { redirectLink } from "./routes/dumpDatabase";
import dumpDatabase, { appExportPath, redirectLink } from "./routes/dumpDatabase";
import { endpoint as getSegmentInfo } from "./routes/getSegmentInfo";
import { postClearCache } from "./routes/postClearCache";
import { addUnlistedVideo } from "./routes/addUnlistedVideo";
@@ -46,6 +46,7 @@ import { getChapterNames } from "./routes/getChapterNames";
import { postRating } from "./routes/ratings/postRating";
import { getRating } from "./routes/ratings/getRating";
import { postClearCache as ratingPostClearCache } from "./routes/ratings/postClearCache";
import path from "path";
export function createServer(callback: () => void): Server {
// Create a service (the app object is just a callback).
@@ -201,6 +202,7 @@ function setupRoutes(router: Router) {
router.get("/database", (req, res) => dumpDatabase(req, res, true));
router.get("/database.json", (req, res) => dumpDatabase(req, res, false));
router.get("/database/*", redirectLink);
router.use("/download", express.static(appExportPath));
} else {
router.get("/database.db", function (req: Request, res: Response) {
res.sendFile("./databases/sponsorTimes.db", { root: "./" });

View File

@@ -31,7 +31,7 @@ const licenseHeader = `<p>The API and database follow <a href="https://creativec
const tables = config?.dumpDatabase?.tables ?? [];
const MILLISECONDS_BETWEEN_DUMPS = config?.dumpDatabase?.minTimeBetweenMs ?? ONE_MINUTE;
const appExportPath = config?.dumpDatabase?.appExportPath ?? "./docker/database-export";
export const appExportPath = config?.dumpDatabase?.appExportPath ?? "./docker/database-export";
const postgresExportPath = config?.dumpDatabase?.postgresExportPath ?? "/opt/exports";
const tableNames = tables.map(table => table.name);
@@ -182,15 +182,16 @@ export async function redirectLink(req: Request, res: Response): Promise<void> {
const file = latestDumpFiles.find((value) => `/database/${value.tableName}.csv` === req.path);
updateQueueTime();
if (file) {
res.redirect(`/download/${file.fileName}`);
} else {
res.sendStatus(404);
}
if (req.query.generate !== "false") await queueDump();
if (req.query.generate !== "false"){
updateQueueTime();
await queueDump();
}
}
function updateQueueTime(): void {