import type { InferSelectModel } from 'drizzle-orm'; import { z } from 'zod/v4'; import { tickets } from '../db/schema.ts'; export type Ticket = InferSelectModel; export const CreateTicketSchema = z.object({ subject: z.string().min(1), queue_id: z.string().uuid(), description: z.string().trim().optional(), custom_fields: z.record(z.string(), z.string()).optional(), }); export const UpdateTicketSchema = z.object({ subject: z.string().min(1).optional(), status: z.string().min(1).optional(), owner_id: z.string().uuid().nullable().optional(), team_id: z.string().uuid().nullable().optional(), }); export const CommentSchema = z.object({ body: z.string().min(1), creator_id: z.string().optional().default('00000000-0000-0000-0000-000000000000'), internal: z.boolean().optional().default(false), attachment_ids: z.array(z.string()).optional(), time_worked_minutes: z.number().int().min(0).optional(), });