Pantry now runs on the v1 API like Inventory/Animals: service layer in src/lib/services/pantry.ts, pure logic + tests in src/lib/pantry/core.ts, thin routes at /api/v1/pantry/* riding the items:* scopes. Pulls write ItemLog type USED with a structured amount (queryable consumption). Bulk-use runs its reads inside the transaction, accumulates repeated pulls, and reports skipped items instead of silently dropping them — the Pull dialog now surfaces those by name. Old /api/pantry routes deleted. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
15 lines
551 B
TypeScript
15 lines
551 B
TypeScript
import { NextResponse } from "next/server";
|
|
import { authenticateRequest, handleApiError } from "@/lib/api/authenticate";
|
|
import { pantryCatalog } from "@/lib/services/pantry";
|
|
|
|
// GET /api/v1/pantry/catalog?q= — autocomplete data for the add/edit dialog
|
|
export async function GET(req: Request) {
|
|
try {
|
|
const ctx = await authenticateRequest(req, "items:read");
|
|
const q = new URL(req.url).searchParams.get("q") ?? undefined;
|
|
return NextResponse.json(await pantryCatalog(ctx, q));
|
|
} catch (err) {
|
|
return handleApiError(err);
|
|
}
|
|
}
|