Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 | 186x 186x | import { z } from "zod"; // Reusable schema for officer data. export const seatoolOfficerSchema = z.object({ OFFICER_ID: z.number(), FIRST_NAME: z.string(), LAST_NAME: z.string(), EMAIL: z.string().nullish(), }); export type SeatoolOfficer = z.infer<typeof seatoolOfficerSchema>; export const seatoolSchema = z.object({ ACTION_OFFICERS: z.array(seatoolOfficerSchema).nullish(), LEAD_ANALYST: z.array(seatoolOfficerSchema).nullable(), STATE_PLAN_SERVICETYPES: z.array( z .object({ SPA_TYPE_ID: z.number(), SPA_TYPE_NAME: z.string(), }) .nullable(), ), STATE_PLAN_SERVICE_SUBTYPES: z.array( z .object({ TYPE_ID: z.number(), TYPE_NAME: z.string(), }) .nullable(), ), STATE_PLAN: z.object({ SUBMISSION_DATE: z.number().nullable(), PLAN_TYPE: z.number().nullable(), LEAD_ANALYST_ID: z.number().nullable(), APPROVED_EFFECTIVE_DATE: z.number().nullable(), ACTUAL_EFFECTIVE_DATE: z.number().nullable(), // This is only set for waivers PROPOSED_DATE: z.number().nullable(), SPW_STATUS_ID: z.number().nullable(), STATE_CODE: z.string().nullish(), STATUS_DATE: z.number().nullish(), SUMMARY_MEMO: z.string().nullish(), TITLE_NAME: z.string().nullish(), CHANGED_DATE: z.number().optional(), }), RAI: z .array( z.object({ RAI_RECEIVED_DATE: z.number().nullable(), RAI_REQUESTED_DATE: z.number().nullable(), RAI_WITHDRAWN_DATE: z.number().nullable(), }), ) .nullable(), ACTIONTYPES: z .array( z.object({ ACTION_ID: z.number(), ACTION_NAME: z.string(), PLAN_TYPE_ID: z.number(), }), ) .nullable(), }); export type SeaTool = z.infer<typeof seatoolSchema>; |