import { z } from 'zod'; import { locationSchema } from '@/schemas/location'; import { idSchema, nameSchema, optionalUrlSchema } from '@/schemas/common'; /** * Historical landmark schema * Uses Zod v4's composition features and common schemas for DRY code */ export const historicalLandmarkSchema = z.object({ id: idSchema, name: nameSchema.min(3, { error: 'Название должно быть длиннее.' }), address: z.string().optional().describe('Landmark address'), period: z.string().describe('Historical period'), builder: z.string().optional().describe('Builder name'), architect: z.string().optional().describe('Architect name'), originalPurpose: z .string() .min(3, { error: 'Описание должно быть длиннее.' }) .describe('Original purpose'), currentStatus: z .string() .min(3, { error: 'Описание должно быть длиннее.' }) .describe('Current status'), historicalNotes: z.array(z.string()).optional().describe('Historical notes'), imageUrl: optionalUrlSchema.describe('Image URL'), location: locationSchema, relatedOrgId: idSchema.optional().describe('Related organization ID'), }); export type HistoricalLandmark = z.infer;