import { z } from 'zod'; const CATEGORIES = [ 'moradia', 'alimentação', 'transporte', 'saúde', 'educação', 'lazer', 'serviços', 'outros', ] as const; export const categoryEnum = z.enum(CATEGORIES); export const typeEnum = z.enum(['expense', 'income']); export const createRecurringExpenseSchema = z.object({ name: z.string().min(1, 'Nome é obrigatório').max(100), amount: z.number().positive('Valor deve ser positivo'), category: categoryEnum.default('outros'), type: typeEnum.default('expense'), due_day: z.number().int().min(1).max(31).nullable().optional(), is_active: z.boolean().default(true), starts_at: z.string().regex(/^\d{4}-\d{2}-\d{2}$/, 'Formato: YYYY-MM-DD').optional(), ends_at: z.string().regex(/^\d{4}-\d{2}-\d{2}$/, 'Formato: YYYY-MM-DD').nullable().optional(), }); export const updateRecurringExpenseSchema = z.object({ name: z.string().min(1).max(100).optional(), amount: z.number().positive().optional(), category: categoryEnum.optional(), type: typeEnum.optional(), due_day: z.number().int().min(1).max(31).nullable().optional(), is_active: z.boolean().optional(), starts_at: z.string().regex(/^\d{4}-\d{2}-\d{2}$/).optional(), ends_at: z.string().regex(/^\d{4}-\d{2}-\d{2}$/).nullable().optional(), }); export const recurringExpenseParamsSchema = z.object({ userId: z.coerce.number().int().positive(), id: z.coerce.number().int().positive(), }); export const recurringExpenseUserParamsSchema = z.object({ userId: z.coerce.number().int().positive(), }); export type CreateRecurringExpenseInput = z.infer; export type UpdateRecurringExpenseInput = z.infer;