import express from "express"; import { generateRandomNumber, getQueriesCount, handleError, escape, jsonSerializer, worldObjectSerializer, sortByMessage, writeResponse, headerTypes, GREETING, } from "./utils.mjs"; let db; const { DATABASE } = process.env; if (DATABASE) db = await import(`./database/${DATABASE}.mjs`); const extra = { id: 0, message: "Additional fortune added at request time." }; const app = express(); app.get("/plaintext", (req, res) => { writeResponse(res, GREETING, headerTypes["plain"]); }); app.get("/json", (req, res) => { writeResponse(res, jsonSerializer({ message: GREETING })); }); if (db) { app.get("/db", async (req, res) => { try { const row = await db.find(generateRandomNumber()); writeResponse(res, worldObjectSerializer(row)); } catch (error) { handleError(error, res); } }); app.get("/queries", async (req, res) => { try { const queriesCount = getQueriesCount(req); const databaseJobs = new Array(queriesCount) .fill() .map(() => db.find(generateRandomNumber())); const worldObjects = await Promise.all(databaseJobs); writeResponse(res, JSON.stringify(worldObjects)); } catch (error) { handleError(error, res); } }); app.get("/fortunes", async (req, res) => { try { const rows = [extra, ...(await db.fortunes())]; sortByMessage(rows); const n = rows.length; let html = "", i = 0; for (; i < n; i++) { html += `
id | message |
---|