qualiteer/lib/server/routes/catalog-route.js
2022-10-15 11:47:47 +00:00

44 lines
1.2 KiB
JavaScript

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;