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:
@@ -13,6 +13,10 @@ export const createItemSchema = z.object({
|
|||||||
globalItemId: z.number().int().positive().optional(),
|
globalItemId: z.number().int().positive().optional(),
|
||||||
purchasePriceCents: z.number().int().nonnegative().optional(),
|
purchasePriceCents: z.number().int().nonnegative().optional(),
|
||||||
brand: z.string().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({
|
export const updateItemSchema = createItemSchema.partial().extend({
|
||||||
@@ -62,6 +66,10 @@ export const createCandidateSchema = z.object({
|
|||||||
pros: z.string().optional(),
|
pros: z.string().optional(),
|
||||||
cons: z.string().optional(),
|
cons: z.string().optional(),
|
||||||
globalItemId: z.number().int().positive().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();
|
export const updateCandidateSchema = createCandidateSchema.partial();
|
||||||
@@ -115,6 +123,10 @@ export const upsertGlobalItemSchema = z.object({
|
|||||||
imageCredit: z.string().optional(),
|
imageCredit: z.string().optional(),
|
||||||
imageSourceUrl: z.string().url().optional().or(z.literal("")),
|
imageSourceUrl: z.string().url().optional().or(z.literal("")),
|
||||||
tags: z.array(z.string().min(1).max(100)).max(20).optional(),
|
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({
|
export const bulkUpsertGlobalItemsSchema = z.object({
|
||||||
|
|||||||
Reference in New Issue
Block a user