import { z } from 'zod'; import { severitySchema, ticketStatusSchema } from './enums'; export const createTicketSchema = z.object({ title: z.string().min(1).max(255), overview: z.string().min(1), severity: severitySchema, categoryId: z.string().min(1), typeId: z.string().min(1), itemId: z.string().min(1), assigneeId: z.string().optional(), }); export const updateTicketSchema = z.object({ title: z.string().min(1).max(255).optional(), overview: z.string().min(1).optional(), severity: severitySchema.optional(), status: ticketStatusSchema.optional(), categoryId: z.string().min(1).optional(), typeId: z.string().min(1).optional(), itemId: z.string().min(1).optional(), assigneeId: z.string().nullable().optional(), }); export const bulkActionSchema = z.discriminatedUnion('action', [ z.object({ action: z.literal('reassign'), ids: z.array(z.string().min(1)).min(1).max(500), value: z.string().nullable(), }), z.object({ action: z.literal('close'), ids: z.array(z.string().min(1)).min(1).max(500), }), z.object({ action: z.literal('setSeverity'), ids: z.array(z.string().min(1)).min(1).max(500), value: severitySchema, }), z.object({ action: z.literal('setStatus'), ids: z.array(z.string().min(1)).min(1).max(500), value: ticketStatusSchema, }), ]); export type CreateTicketInput = z.infer; export type UpdateTicketInput = z.infer; export type BulkActionInput = z.infer;