Build, Test, and Push CFDM Docker Image / test (push) Has been cancelled
Build, Test, and Push CFDM Docker Image / build-and-push (push) Has been cancelled
Build, Test, and Push CFDM Docker Image / create-release (push) Has been cancelled
Build, Test, and Push CFDM Docker Image / update-wiki (push) Has been cancelled
66 lines
1.9 KiB
TypeScript
66 lines
1.9 KiB
TypeScript
import type { FastifyInstance } from "fastify";
|
|
import { z } from "zod";
|
|
import { repos } from "@cfdm/db";
|
|
import * as serviceConfig from "../services/service-config-service.js";
|
|
|
|
export async function serviceRoutes(app: FastifyInstance) {
|
|
const createSchema = z.object({
|
|
name: z.string(),
|
|
slug: z.string(),
|
|
service_group_id: z.number().nullable().optional(),
|
|
});
|
|
|
|
app.get("/services", async (request) => {
|
|
return serviceConfig.listViews(request.server.db);
|
|
});
|
|
|
|
app.post("/services", async (request) => {
|
|
const body = createSchema.parse(request.body);
|
|
const service = repos.createService(
|
|
request.server.db,
|
|
body.name,
|
|
body.slug,
|
|
);
|
|
if (body.service_group_id != null) {
|
|
repos.setServiceGroup(
|
|
request.server.db,
|
|
service.id,
|
|
body.service_group_id,
|
|
);
|
|
}
|
|
return serviceConfig.getView(request.server.db, service.id);
|
|
});
|
|
|
|
app.get("/services/:id", async (request) => {
|
|
const { id } = request.params as { id: string };
|
|
return serviceConfig.getView(request.server.db, Number(id));
|
|
});
|
|
|
|
app.patch("/services/:id", async (request) => {
|
|
const { id } = request.params as { id: string };
|
|
return serviceConfig.updateConfig(
|
|
request.server.db,
|
|
request.server.cf,
|
|
Number(id),
|
|
request.body as serviceConfig.UpdateServiceConfigRequest,
|
|
);
|
|
});
|
|
|
|
app.delete("/services/:id", async (request) => {
|
|
const { id } = request.params as { id: string };
|
|
repos.deleteService(request.server.db, Number(id));
|
|
return { deleted: true };
|
|
});
|
|
|
|
app.patch("/services/:id/toggle", async (request) => {
|
|
const { id } = request.params as { id: string };
|
|
const body = z.object({ enabled: z.boolean() }).parse(request.body);
|
|
return serviceConfig.toggleService(
|
|
request.server.db,
|
|
request.server.cf,
|
|
Number(id),
|
|
body.enabled,
|
|
);
|
|
});
|
|
}
|