feat(companies): service + validators + unit tests
This commit is contained in:
26
src/lib/validators/companies.ts
Normal file
26
src/lib/validators/companies.ts
Normal file
@@ -0,0 +1,26 @@
|
||||
import { z } from 'zod';
|
||||
import { baseListQuerySchema } from '@/lib/api/route-helpers';
|
||||
|
||||
export const createCompanySchema = z.object({
|
||||
name: z.string().min(1).max(200),
|
||||
legalName: z.string().optional(),
|
||||
taxId: z.string().optional(),
|
||||
registrationNumber: z.string().optional(),
|
||||
incorporationCountry: z.string().optional(),
|
||||
incorporationDate: z.coerce.date().optional(),
|
||||
status: z.enum(['active', 'dissolved']).optional().default('active'),
|
||||
billingEmail: z.string().email().optional(),
|
||||
notes: z.string().optional(),
|
||||
tagIds: z.array(z.string()).optional().default([]),
|
||||
});
|
||||
|
||||
export const updateCompanySchema = createCompanySchema.partial().omit({ tagIds: true });
|
||||
|
||||
export const listCompaniesSchema = baseListQuerySchema.extend({
|
||||
status: z.enum(['active', 'dissolved']).optional(),
|
||||
search: z.string().optional(),
|
||||
});
|
||||
|
||||
export type CreateCompanyInput = z.infer<typeof createCompanySchema>;
|
||||
export type UpdateCompanyInput = z.infer<typeof updateCompanySchema>;
|
||||
export type ListCompaniesInput = z.infer<typeof listCompaniesSchema>;
|
||||
Reference in New Issue
Block a user