COURTRIX / src /app /api /customers /route.ts
Ali-Developments's picture
Upload 125 files
ad79323 verified
Raw
History Blame Contribute Delete
1.21 kB
import { NextRequest, NextResponse } from "next/server";
import { requireApiUser } from "@/server/auth/session";
import {
createCustomer,
listCustomers,
normalizeCustomerListFilters,
} from "@/server/customers/service";
import { createRouteErrorResponse } from "@/server/errors";
import {
customerListQuerySchema,
customerSchema,
} from "@/server/validation/customer";
export async function GET(request: NextRequest) {
try {
const user = await requireApiUser();
const query = customerListQuerySchema.parse(
Object.fromEntries(request.nextUrl.searchParams.entries()),
);
const filters = normalizeCustomerListFilters(query);
const result = await listCustomers(user.id, filters);
return NextResponse.json({
...result,
filters,
});
} catch (error) {
return createRouteErrorResponse(error);
}
}
export async function POST(request: Request) {
try {
const user = await requireApiUser();
const body = customerSchema.parse(await request.json());
const customer = await createCustomer(user.id, body);
return NextResponse.json({ customer }, { status: 201 });
} catch (error) {
return createRouteErrorResponse(error);
}
}