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