Minor Adjustments

This commit is contained in:
Dunemask 2023-03-19 13:53:37 -04:00
parent 1084f5d937
commit f486d50efa
60 changed files with 1965 additions and 127 deletions

View file

@ -0,0 +1,41 @@
import { Router, json as jsonMiddleware } from "express";
import {
getSilencedTests,
upsertAlertSilence,
deleteAlertSilence,
} from "../database/queries/alerting.js";
const router = Router();
// Apply Middlewares
router.use(jsonMiddleware());
// Get Routes
router.get("/silenced", (req, res) => {
getSilencedTests().then((t) => res.send(t));
});
// Post Routes
router.post("/silence", (req, res) => {
const { name, class: className, method, expires, keepExpires } = req.body;
if (!name || !className || !method)
return res
.status(400)
.send("'name', 'class', and 'method' are all required Fields!");
if (expires === null)
return deleteAlertSilence(req.body)
.then(() => res.sendStatus(200))
.catch((e) => res.status(500).send(e));
const { h, m } = keepExpires ? {} : expires;
if (!keepExpires && (h == null || m == null))
return res.status(400).send("Both 'h' and 'm' are required fields!");
if (!keepExpires && (h < 0 || m < 0))
return res
.status(400)
.send("'h' and 'm' must be greater than or equal to 0!");
// TODO set max times as well
if (!keepExpires && (h > 72 || m > 59))
res.status(400).send("'h' and 'm' must not exceed the set maxes!");
upsertAlertSilence(req.body).then(() => res.sendStatus(200));
});
export default router;

View file

@ -0,0 +1,44 @@
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;

View file

@ -0,0 +1,13 @@
import { Router, json as jsonMiddleware } from "express";
import TestResultsWorker from "../rabbit/workers/TestResultsWorker.js";
export default function buildDevRoute(pg, skio) {
const router = Router();
router.use(jsonMiddleware());
router.post("/rabbit/TestResults", (req, res) => {
const { testResult } = req.body;
new TestResultsWorker(skio).onMessage(testResult);
res.sendStatus(200);
});
return router;
}

8
libold/server/routes/react-route.js vendored Normal file
View file

@ -0,0 +1,8 @@
import express, { Router } from "express";
import path from "path";
const router = Router();
router.use("/", express.static(path.resolve("./build")));
router.get("/*", (req, res) =>
res.sendFile(path.resolve("./build/index.html"))
);
export default router;

View file

@ -0,0 +1,27 @@
import { Router, json as jsonMiddleware } from "express";
import {
getCurrentlyFailing,
ignoreResult,
} from "../database/queries/results.js";
const router = Router();
// Apply Middlewares
router.use(jsonMiddleware());
// Get Routes
router.get("/failing", (req, res) => {
getCurrentlyFailing().then((f) => res.json(f));
});
// Post Routes
router.post("/history", (req, res) => {
res.send([]);
});
router.post("/ignore", (req, res) => {
if (!req.body || !req.body.id)
return res.status(400).send("'id' is required!");
ignoreResult(req.body).then(() => res.sendStatus(200));
});
export default router;

View file

@ -0,0 +1,30 @@
// Imports
import express from "express";
// Routes
import vitals from "../routes/vitals-route.js";
import results from "../routes/results-route.js";
import alerting from "../routes/alerting-route.js";
import react from "../routes/react-route.js";
import catalog from "../routes/catalog-route.js";
import buildDevRoute from "../routes/dev-route.js";
export default function buildRoutes(pg, skio) {
const router = express.Router();
// Special Routes
router.use(vitals);
router.all("/", (req, res) => res.redirect("/qualiteer"));
if (process.env.USE_DEV_ROUTER === "true")
router.use("/api/dev", buildDevRoute(pg, skio));
// Middlewares
// Routes
router.use("/qualiteer", react); // Static Build Route
router.use("/api/results", results);
router.use("/api/alerting", alerting);
router.use("/api/catalog", catalog);
return router;
}

View file

@ -0,0 +1,7 @@
import { Router } from "express";
const router = Router();
// Get Routes
router.get("/healthz", (req, res) => res.sendStatus(200));
export default router;