import { z } from 'zod'; import { SLIDE_IMAGE_SLOT_ACTION } from '../../constants'; import { SlideImageSlotSchema } from '../../models/presentation/slide-image-slot.schema'; export namespace UpdateSlideImageSlotCommand { const ReplacePayload = z.object({ action: z.literal(SLIDE_IMAGE_SLOT_ACTION.REPLACE), fileId: z.string().uuid(), }); const GeneratePayload = z.object({ action: z.literal(SLIDE_IMAGE_SLOT_ACTION.GENERATE), prompt: z.string().min(1).max(1000).optional(), }); const UpdateImageSlotPayloadSchema = z.discriminatedUnion('action', [ ReplacePayload, GeneratePayload, ]); export type UpdateImageSlotPayload = z.infer; export const RequestSchema = z.object({ payload: UpdateImageSlotPayloadSchema, }); export type Request = z.infer; export const RequestParamsSchema = z.object({ presentationId: z.string().uuid(), slideId: z.string().uuid(), slotId: z.string().uuid().optional(), }); export type RequestParams = z.infer; export const ResponseSchema = z.object({ data: z.object({ imageSlot: SlideImageSlotSchema, }), }); export type Response = z.infer; }