turash/bugulma/frontend/schemas/historical.ts

31 lines
1.2 KiB
TypeScript

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<typeof historicalLandmarkSchema>;