import { z } from "zod/v4"; import { DepartmentAssignmentSchema, DepartmentSchema, PersonFieldsSchema, PersonSchema, } from "./people.dto"; const RequiredTextSchema = z .string() .min(1) .max(100) .refine((value) => value.trim().length > 0); export const CompanyFieldsSchema = z.strictObject({ name: RequiredTextSchema, active: z.boolean(), }); export const ContactFieldsSchema = PersonFieldsSchema.omit({ isContact: true }); export const SiteFieldsSchema = z.strictObject({ name: RequiredTextSchema, address: z.string().max(10000).nullable(), }); export const CompanySummarySchema = CompanyFieldsSchema.extend({ id: z.uuid() }); export type CompanySummaryDTO = z.infer; export const ContactSchema = PersonSchema; export type ContactDTO = z.infer; export const SiteSchema = SiteFieldsSchema.extend({ id: z.uuid(), companyId: z.uuid() }); export type SiteDTO = z.infer; export const CompanySchema = CompanySummarySchema.extend({ contacts: z.array(ContactSchema), sites: z.array(SiteSchema), people: z.array(PersonSchema), departments: z.array(DepartmentSchema), assignments: z.array(DepartmentAssignmentSchema), }); export type CompanyDTO = z.infer;