// Auto-generated Customer routes import type { FastifyInstance } from "fastify"; import { authenticate } from "../middleware/auth.js"; import { CustomerService } from "../services/customer.js"; import type { CreateCustomerInput, UpdateCustomerInput } from "../types/index.js"; const service = new CustomerService(); export async function customersRoutes(app: FastifyInstance): Promise { // All routes require authentication app.addHook("onRequest", authenticate); // GET /api/customers — list app.get("/", async (request, reply) => { const items = service.list(); return { data: items }; }); // GET /api/customers/:id — get by id app.get<{ Params: { id: string } }>("/:id", async (request, reply) => { const item = service.getById(request.params.id); if (!item) { return reply.status(404).send({ error: "Not Found", message: "Customer not found", statusCode: 404 }); } return { data: item }; }); // POST /api/customers — create app.post<{ Body: CreateCustomerInput }>("/", async (request, reply) => { const item = service.create(request.body); return reply.status(201).send({ data: item }); }); // PUT /api/customers/:id — update app.put<{ Params: { id: string }; Body: UpdateCustomerInput }>("/:id", async (request, reply) => { const item = service.update(request.params.id, request.body); if (!item) { return reply.status(404).send({ error: "Not Found", message: "Customer not found", statusCode: 404 }); } return { data: item }; }); // DELETE /api/customers/:id — delete app.delete<{ Params: { id: string } }>("/:id", async (request, reply) => { const deleted = service.delete(request.params.id); if (!deleted) { return reply.status(404).send({ error: "Not Found", message: "Customer not found", statusCode: 404 }); } return reply.status(204).send(); }); }