27 lines
1.0 KiB
TypeScript
27 lines
1.0 KiB
TypeScript
|
|
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>;
|