feat(29-01): add image presentation fields to Zod schemas

Add dominantColor, cropZoom, cropX, cropY to createItemSchema,
createCandidateSchema, and upsertGlobalItemSchema.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-04-12 19:56:56 +02:00
parent 2696b78f9e
commit 34804731a1

View File

@@ -13,6 +13,10 @@ export const createItemSchema = z.object({
globalItemId: z.number().int().positive().optional(),
purchasePriceCents: z.number().int().nonnegative().optional(),
brand: z.string().optional(),
dominantColor: z.string().nullable().optional(),
cropZoom: z.number().nullable().optional(),
cropX: z.number().nullable().optional(),
cropY: z.number().nullable().optional(),
});
export const updateItemSchema = createItemSchema.partial().extend({
@@ -62,6 +66,10 @@ export const createCandidateSchema = z.object({
pros: z.string().optional(),
cons: z.string().optional(),
globalItemId: z.number().int().positive().optional(),
dominantColor: z.string().nullable().optional(),
cropZoom: z.number().nullable().optional(),
cropX: z.number().nullable().optional(),
cropY: z.number().nullable().optional(),
});
export const updateCandidateSchema = createCandidateSchema.partial();
@@ -115,6 +123,10 @@ export const upsertGlobalItemSchema = z.object({
imageCredit: z.string().optional(),
imageSourceUrl: z.string().url().optional().or(z.literal("")),
tags: z.array(z.string().min(1).max(100)).max(20).optional(),
dominantColor: z.string().nullable().optional(),
cropZoom: z.number().nullable().optional(),
cropX: z.number().nullable().optional(),
cropY: z.number().nullable().optional(),
});
export const bulkUpsertGlobalItemsSchema = z.object({