Openstatus www.openstatus.dev
at main 55 lines 1.5 kB view raw
1import { createInsertSchema, createSelectSchema } from "drizzle-zod"; 2import * as z from "zod"; 3 4import { 5 statusReport, 6 statusReportStatus, 7 statusReportUpdate, 8} from "./status_reports"; 9 10export const statusReportStatusSchema = z.enum(statusReportStatus); 11 12export const insertStatusReportUpdateSchema = createInsertSchema( 13 statusReportUpdate, 14 { 15 status: statusReportStatusSchema, 16 }, 17).extend({ 18 date: z.coerce.date().optional().prefault(new Date()), 19}); 20 21export const insertStatusReportSchema = createInsertSchema(statusReport, { 22 status: statusReportStatusSchema, 23}) 24 .extend({ 25 date: z.coerce.date().optional().prefault(new Date()), 26 /** 27 * relationship to monitors and pages 28 */ 29 monitors: z.number().array().optional().prefault([]), 30 }) 31 .extend({ 32 /** 33 * message for the `InsertIncidentUpdate` 34 */ 35 message: z.string(), 36 }); 37 38export const selectStatusReportSchema = createSelectSchema(statusReport, { 39 status: statusReportStatusSchema, 40}); 41 42export const selectStatusReportUpdateSchema = createSelectSchema( 43 statusReportUpdate, 44 { 45 status: statusReportStatusSchema, 46 }, 47); 48 49export type InsertStatusReport = z.infer<typeof insertStatusReportSchema>; 50export type StatusReport = z.infer<typeof selectStatusReportSchema>; 51export type InsertStatusReportUpdate = z.infer< 52 typeof insertStatusReportUpdateSchema 53>; 54export type StatusReportUpdate = z.infer<typeof selectStatusReportUpdateSchema>; 55export type StatusReportStatus = z.infer<typeof statusReportStatusSchema>;