import { z } from "zod" import camelcaseKeys from "camelcase-keys" export const SceneSchema = z .object({ id: z.string().optional(), movieId: z.string(), type: z.string(), }) .transform((item) => { return { ...item, toJson: () => { return Object.fromEntries( Object.entries(item).map(([key, value]) => [ key.replace(/([A-Z])/g, "_$1").toLowerCase(), value, ]), ) }, } }) export type Scene = z.infer & { toJson(): Object } export const createScene = (data: Record): Scene => { return SceneSchema.parse(camelcaseKeys(data, { deep: true })) }