Files
FEDEO/push-server/apps/api/src/index.ts
flfeders 7b705c7f40
All checks were successful
Build and Push Docker Images / build-backend (push) Successful in 16s
Build and Push Docker Images / build-frontend (push) Successful in 16s
Build and Push Docker Images / build-website (push) Successful in 16s
Build and Push Docker Images / build-central-services-api (push) Successful in 24s
Build and Push Docker Images / build-central-services-admin (push) Successful in 41s
Build and Push Docker Images / build-docs (push) Successful in 16s
fix: cors fuer admin schreibzugriffe erlauben
2026-08-05 14:17:23 +02:00

55 lines
1.6 KiB
TypeScript

import "./types.js";
import Fastify from "fastify";
import cors from "@fastify/cors";
import { ZodError } from "zod";
import { env } from "./config/env.js";
import { pool } from "./db/client.js";
import { adminRoutes } from "./routes/admin.js";
import { instanceRoutes } from "./routes/instance.js";
import { publicRoutes } from "./routes/public.js";
import { serviceRoutes } from "./routes/services.js";
const app = Fastify({
logger: true,
bodyLimit: 128 * 1024,
});
app.addContentTypeParser("application/json", { parseAs: "string" }, (request, body, done) => {
const rawBody = typeof body === "string" ? body : body.toString("utf8");
request.rawBody = rawBody;
try {
done(null, rawBody ? JSON.parse(rawBody) : {});
} catch (error) {
done(error as Error);
}
});
app.setErrorHandler((error, _request, reply) => {
if (error instanceof ZodError) {
reply.code(400).send({ error: "validation_error", issues: error.issues });
return;
}
app.log.error(error);
reply.code(500).send({ error: "internal_error", message: "Interner Fehler im Push-Server." });
});
await app.register(cors, {
origin: true,
credentials: true,
methods: ["GET", "HEAD", "POST", "PUT", "PATCH", "DELETE", "OPTIONS"],
});
await app.register(publicRoutes);
await app.register(adminRoutes);
await app.register(instanceRoutes);
await app.register(serviceRoutes);
const close = async () => {
await app.close();
await pool.end();
};
process.on("SIGINT", () => void close().then(() => process.exit(0)));
process.on("SIGTERM", () => void close().then(() => process.exit(0)));
await app.listen({ host: env.API_HOST, port: env.API_PORT });