Openstatus www.openstatus.dev
at main 28 lines 975 B view raw
1import { createInsertSchema, createSelectSchema } from "drizzle-zod"; 2import { z } from "zod"; 3import { maintenance } from "./maintenance"; 4 5export const insertMaintenanceSchema = createInsertSchema(maintenance) 6 .extend({ 7 // REMINDER: trick to make the react-hook-form controlled but not allow empty string 8 title: z.string().min(1, { 9 error: "Required", 10 }), 11 message: z.string().min(1, { 12 error: "Required", 13 }), 14 15 monitors: z.number().array().prefault([]).optional(), 16 }) 17 // REMINDER: validate that `from` date is before `to` date 18 .refine((data) => data.from < data.to, { 19 path: ["to"], 20 error: "End date cannot be earlier than start date.", 21 }); 22 23export const selectMaintenanceSchema = createSelectSchema(maintenance).extend({ 24 monitors: z.number().array().prefault([]).optional(), 25}); 26 27export type InsertMaintenance = z.infer<typeof insertMaintenanceSchema>; 28export type Maintenance = z.infer<typeof selectMaintenanceSchema>;