import { Router, json as jsonMiddleware } from "express"; import { getTests, getPipelineMappings, upsertTest, truncateTests, removeDroppedTests, } from "../database/queries/catalog.js"; const router = Router(); const maxSize = 1024 * 1024 * 100; // 100MB // Apply Middlewares router.use(jsonMiddleware({ limit: maxSize })); // Get Routes router.get("/tests", (req, res) => { getTests().then((t) => res.json(t)); }); router.get("/pipeline-mappings", (req, res) => { getPipelineMappings().then((m) => res.json(m)); }); // Post Routes router.post("/update", (req, res) => { if (!req.body) return res.status(400).send("Body required!"); if (!Array.isArray(req.body)) return res.status(400).send("Body must be an array!"); const wrongImage = req.body.find(({ image }) => image !== req.body[0].image); if (wrongImage) return res.status(400).send("Tests cannot have unique images!"); const testNames = req.body.map(({ name }) => name); // Upsert new tests const upserts = Promise.all( req.body.map((catalogItem) => upsertTest(catalogItem)) ); const dropRm = upserts.then(() => removeDroppedTests(testNames)); dropRm.then(() => res.sendStatus(200)).catch((e) => res.status(500).send(e)); }); export default router;