This commit is contained in:
2026-05-10 19:12:02 +02:00
commit 3398982ca8
19 changed files with 2152 additions and 0 deletions

50
src/app.js Normal file
View File

@@ -0,0 +1,50 @@
const cors = require("cors");
const express = require("express");
const swaggerUi = require("swagger-ui-express");
const { pingMongo } = require("./db/client");
const { router: apiRouter } = require("./routes/api");
const { openApiDocument } = require("./swagger/openapi");
function createApp() {
const app = express();
app.use(cors());
app.use(express.json({ limit: "2mb" }));
app.get("/", (request, response) => {
response.redirect("/docs");
});
app.get("/health", async (request, response) => {
try {
await pingMongo();
response.json({ ok: true, mongo: "connected" });
} catch (error) {
response
.status(503)
.json({ ok: false, mongo: "unavailable", error: error.message });
}
});
app.get("/openapi.json", (request, response) => {
response.json(openApiDocument);
});
app.use("/docs", swaggerUi.serve, swaggerUi.setup(openApiDocument));
app.use("/api", apiRouter);
app.use((request, response) => {
response.status(404).json({ error: "Not found" });
});
app.use((error, request, response, next) => {
const status = error.status || 500;
response
.status(status)
.json({ error: error.message || "Internal server error" });
});
return app;
}
module.exports = { createApp };