import { z } from 'zod'; import { PageType } from '../constants'; import { PageQuestionSchema } from './page-question.schema'; export const WriterToolPageMetadataSchema = z.object({ type: z.literal(PageType.WRITER_TOOL), }); export const EduTaskSolvingToolPageMetadataSchema = z.object({ type: z.literal(PageType.EDU_TASK_SOLVING_TOOL), }); export const PresentationToolPageMetadataSchema = z.object({ type: z.literal(PageType.PRESENTATION_TOOL), }); export const WriterDocumentTypePageMetadataSchema = z.object({ type: z.literal(PageType.WRITER_DOCUMENT_TYPE), writerDocumentTypeId: z.string().uuid(), }); export const PageMetadataSchema = z.discriminatedUnion('type', [ WriterToolPageMetadataSchema, EduTaskSolvingToolPageMetadataSchema, PresentationToolPageMetadataSchema, WriterDocumentTypePageMetadataSchema, ]); export const PageSchema = z.object({ uuid: z.string().uuid(), metaTitle: z.string().min(3).max(16384), metaDescription: z.string().min(3).max(16384), title: z.string().min(3).max(16384), subTitle: z.string().min(3).max(16384), seoTextMd: z.string().min(3).max(16384), alias: z.string().min(3).max(16384), type: z.nativeEnum(PageType), metadata: PageMetadataSchema, createdAt: z.date(), updatedAt: z.date(), }); export const PageWithQuestionsSchema = PageSchema.extend({ questions: z.array(PageQuestionSchema), });