30 lines
1.3 KiB
TypeScript
30 lines
1.3 KiB
TypeScript
import { z } from "zod";
|
|
|
|
export const containerInput = z.object({
|
|
name: z.string().trim().min(1).max(120),
|
|
type: z.string().trim().min(1).max(40).default("other"),
|
|
locationNotes: z.string().trim().max(500).nullable().optional(),
|
|
coverImageUrl: z.string().trim().max(500).nullable().optional(),
|
|
});
|
|
|
|
export const containerUpdateInput = containerInput.partial();
|
|
|
|
export const plantInput = z.object({
|
|
name: z.string().trim().min(1).max(120),
|
|
category: z.string().trim().min(1).max(40).default("other"),
|
|
containerId: z.string().uuid().nullable().optional(),
|
|
healthStatus: z.string().trim().min(1).max(40).default("healthy"),
|
|
growthStage: z.string().trim().max(40).nullable().optional(),
|
|
scientificName: z.string().trim().max(200).nullable().optional(),
|
|
speciesId: z.string().trim().max(100).nullable().optional(),
|
|
sunlight: z.string().trim().max(200).nullable().optional(),
|
|
wateringNotes: z.string().trim().max(2000).nullable().optional(),
|
|
fertilizingNotes: z.string().trim().max(2000).nullable().optional(),
|
|
notes: z.string().trim().max(2000).nullable().optional(),
|
|
acquisitionDate: z.string().nullable().optional(),
|
|
images: z.array(z.string().min(1)).max(10).default([]),
|
|
primaryImageUrl: z.string().min(1).nullable().optional(),
|
|
});
|
|
|
|
export const plantUpdateInput = plantInput.partial();
|