import { Elysia, t } from "elysia"; import prisma from "../lib/prisma"; export const customersRoute = new Elysia({ prefix: "/customers" }) .get("/", async ({ query }) => { const search = query.search; const whereClause = search ? { OR: [ { displayName: { contains: search, mode: "insensitive" } }, { email: { contains: search, mode: "insensitive" } }, { phone: { contains: search, mode: "insensitive" } }, { lineUserId: { contains: search, mode: "insensitive" } } ] } : {}; return await prisma.customer.findMany({ where: whereClause, orderBy: { createdAt: 'desc' }, include: { _count: { select: { orders: true } } } }); }) .get("/:id", async ({ params: { id }, set }) => { const customer = await prisma.customer.findUnique({ where: { id: Number(id) }, include: { orders: { orderBy: { createdAt: 'desc' } } } }); if (!customer) { set.status = 404; return { error: "Customer not found" }; } return customer; }) .patch("/:id/points", async ({ params: { id }, body, set }) => { try { const { pointsDelta, reason } = body; const customer = await prisma.customer.findUnique({ where: { id: Number(id) } }); if (!customer) { set.status = 404; return { error: "Customer not found" }; } const newPoints = Math.max(0, customer.points + pointsDelta); const updatedCustomer = await prisma.customer.update({ where: { id: Number(id) }, data: { points: newPoints } }); return updatedCustomer; } catch (err) { console.error("[Customers] Adjust Points Error:", err); set.status = 500; return { error: "Failed to adjust points" }; } }, { body: t.Object({ pointsDelta: t.Number(), reason: t.Optional(t.String()) }) }); //# sourceMappingURL=customers.js.map