44 lines
845 B
TypeScript
44 lines
845 B
TypeScript
import { oc } from '@orpc/contract'
|
|
import {
|
|
createInsertSchema,
|
|
createSelectSchema,
|
|
createUpdateSchema,
|
|
} from 'drizzle-zod'
|
|
import { z } from 'zod'
|
|
import { todoTable } from '@/db/schema'
|
|
|
|
const selectSchema = createSelectSchema(todoTable)
|
|
|
|
const insertSchema = createInsertSchema(todoTable).omit({
|
|
id: true,
|
|
createdAt: true,
|
|
updatedAt: true,
|
|
})
|
|
|
|
const updateSchema = createUpdateSchema(todoTable).omit({
|
|
id: true,
|
|
createdAt: true,
|
|
updatedAt: true,
|
|
})
|
|
|
|
export const list = oc.input(z.void()).output(z.array(selectSchema))
|
|
|
|
export const create = oc.input(insertSchema).output(selectSchema)
|
|
|
|
export const update = oc
|
|
.input(
|
|
z.object({
|
|
id: z.uuid(),
|
|
data: updateSchema,
|
|
}),
|
|
)
|
|
.output(selectSchema)
|
|
|
|
export const remove = oc
|
|
.input(
|
|
z.object({
|
|
id: z.uuid(),
|
|
}),
|
|
)
|
|
.output(z.void())
|