import { z } from 'zod'
import { CODE_REGEX, MAX_CODE_LENGTH } from '@/lib/code'

const codeField = z
  .string()
  .trim()
  .max(MAX_CODE_LENGTH)
  .regex(CODE_REGEX, 'Ongeldige code')
  .optional()
  .or(z.literal(''))

export const createStorySchema = z.object({
  pbiId: z.string(),
  productId: z.string(),
  code: codeField,
  title: z.string().min(1, 'Titel is verplicht').max(200),
  description: z.string().max(2000).optional(),
  acceptance_criteria: z.string().max(2000).optional(),
  priority: z.coerce.number().int().min(1).max(4),
})

export const updateStorySchema = z.object({
  id: z.string(),
  code: codeField,
  title: z.string().min(1, 'Titel is verplicht').max(200),
  description: z.string().max(2000).optional(),
  acceptance_criteria: z.string().max(2000).optional(),
  priority: z.coerce.number().int().min(1).max(4),
})

export type CreateStoryInput = z.infer<typeof createStorySchema>
export type UpdateStoryInput = z.infer<typeof updateStorySchema>
