import { ORPCError } from '@orpc/server' import { eq } from 'drizzle-orm' import { todoTable } from '@/db/schema' import { baseProcedure } from '@/orpc/procedures' export const list = baseProcedure.todo.list.handler(async ({ context }) => { const todos = await context.db.query.todoTable.findMany({ orderBy: (todos, { desc }) => [desc(todos.createdAt)], }) return todos }) export const create = baseProcedure.todo.create.handler( async ({ context, input }) => { const [newTodo] = await context.db .insert(todoTable) .values(input) .returning() if (!newTodo) { throw new ORPCError('NOT_FOUND') } return newTodo }, ) export const update = baseProcedure.todo.update.handler( async ({ context, input }) => { const [updatedTodo] = await context.db .update(todoTable) .set(input.data) .where(eq(todoTable.id, input.id)) .returning() if (!updatedTodo) { throw new ORPCError('NOT_FOUND') } return updatedTodo }, ) export const remove = baseProcedure.todo.remove.handler( async ({ context, input }) => { await context.db.delete(todoTable).where(eq(todoTable.id, input.id)) }, )