Openstatus
www.openstatus.dev
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>;