import { oc } from '@orpc/contract' import { z } from 'zod' export const todoSchema = z.object({ id: z.uuid(), title: z.string(), completed: z.boolean(), createdAt: z.date(), updatedAt: z.date(), }) export const todoInsertSchema = z.object({ title: z.string().min(1), completed: z.boolean().optional(), }) export const todoUpdateSchema = z.object({ title: z.string().min(1).optional(), completed: z.boolean().optional(), }) export const todoContract = { list: oc.input(z.void()).output(z.array(todoSchema)), create: oc.input(todoInsertSchema).output(todoSchema), update: oc .input( z.object({ id: z.uuid(), data: todoUpdateSchema, }), ) .output(todoSchema), remove: oc .input( z.object({ id: z.uuid(), }), ) .output(z.void()), } export const contract = { todo: todoContract, } export type Contract = typeof contract