feat: add Zod validation schemas for all domain routes
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
37
src/schemas/received-invoices.schema.ts
Normal file
37
src/schemas/received-invoices.schema.ts
Normal file
@@ -0,0 +1,37 @@
|
||||
import { z } from 'zod';
|
||||
|
||||
export const CreateReceivedInvoiceSchema = z.object({
|
||||
supplier_name: z.string().min(1, 'Název dodavatele je povinný'),
|
||||
month: z.union([z.number(), z.string()]).transform(v => Number(v)),
|
||||
year: z.union([z.number(), z.string()]).transform(v => Number(v)),
|
||||
invoice_number: z.string().nullish(),
|
||||
description: z.string().nullish(),
|
||||
amount: z.union([z.number(), z.string()]).transform(v => Number(v)).optional().default(0),
|
||||
currency: z.string().optional().default('CZK'),
|
||||
vat_rate: z.union([z.number(), z.string()]).transform(v => Number(v)).optional().default(21),
|
||||
vat_amount: z.union([z.number(), z.string()]).transform(v => Number(v)).optional().default(0),
|
||||
issue_date: z.string().nullish(),
|
||||
due_date: z.string().nullish(),
|
||||
status: z.string().optional().default('unpaid'),
|
||||
notes: z.string().nullish(),
|
||||
});
|
||||
|
||||
export const UpdateReceivedInvoiceSchema = z.object({
|
||||
supplier_name: z.string().optional(),
|
||||
invoice_number: z.string().nullish(),
|
||||
description: z.string().nullish(),
|
||||
amount: z.union([z.number(), z.string()]).transform(v => Number(v)).optional(),
|
||||
currency: z.string().optional(),
|
||||
vat_rate: z.union([z.number(), z.string()]).transform(v => Number(v)).optional(),
|
||||
vat_amount: z.union([z.number(), z.string()]).transform(v => Number(v)).optional(),
|
||||
issue_date: z.union([z.string(), z.null()]).optional(),
|
||||
due_date: z.union([z.string(), z.null()]).optional(),
|
||||
paid_date: z.union([z.string(), z.null()]).optional(),
|
||||
status: z.string().optional(),
|
||||
notes: z.string().nullish(),
|
||||
month: z.union([z.number(), z.string()]).transform(v => Number(v)).optional(),
|
||||
year: z.union([z.number(), z.string()]).transform(v => Number(v)).optional(),
|
||||
});
|
||||
|
||||
export type CreateReceivedInvoiceInput = z.infer<typeof CreateReceivedInvoiceSchema>;
|
||||
export type UpdateReceivedInvoiceInput = z.infer<typeof UpdateReceivedInvoiceSchema>;
|
||||
Reference in New Issue
Block a user