diff --git a/src/orpc/contracts/index.ts b/src/orpc/contract.ts similarity index 51% rename from src/orpc/contracts/index.ts rename to src/orpc/contract.ts index 0056f6e..19f8b05 100644 --- a/src/orpc/contracts/index.ts +++ b/src/orpc/contract.ts @@ -1,4 +1,4 @@ -import { todoContract } from './todo' +import { todoContract } from './contracts/todo' export const contract = { todo: todoContract, diff --git a/src/orpc/handlers/todo.ts b/src/orpc/handlers/todo.ts index 65702f7..9136e14 100644 --- a/src/orpc/handlers/todo.ts +++ b/src/orpc/handlers/todo.ts @@ -1,10 +1,10 @@ -import { implement, ORPCError } from '@orpc/server' +import { ORPCError } from '@orpc/server' import { eq } from 'drizzle-orm' import { todoTable } from '@/db/schema' import { dbProvider } from '@/orpc/middlewares' -import { contract } from '../contracts' +import { os } from '@/orpc/server' -export const list = implement(contract.todo.list) +export const list = os.todo.list .use(dbProvider) .handler(async ({ context }) => { const todos = await context.db.query.todoTable.findMany({ @@ -13,7 +13,7 @@ export const list = implement(contract.todo.list) return todos }) -export const create = implement(contract.todo.create) +export const create = os.todo.create .use(dbProvider) .handler(async ({ context, input }) => { const [newTodo] = await context.db @@ -28,7 +28,7 @@ export const create = implement(contract.todo.create) return newTodo }) -export const update = implement(contract.todo.update) +export const update = os.todo.update .use(dbProvider) .handler(async ({ context, input }) => { const [updatedTodo] = await context.db @@ -44,7 +44,7 @@ export const update = implement(contract.todo.update) return updatedTodo }) -export const remove = implement(contract.todo.remove) +export const remove = os.todo.remove .use(dbProvider) .handler(async ({ context, input }) => { await context.db.delete(todoTable).where(eq(todoTable.id, input.id)) diff --git a/src/orpc/router.ts b/src/orpc/router.ts index 70b205b..603f313 100644 --- a/src/orpc/router.ts +++ b/src/orpc/router.ts @@ -1,5 +1,6 @@ import * as todo from './handlers/todo' +import { os } from './server' -export const router = { +export const router = os.router({ todo, -} +}) diff --git a/src/orpc/server.ts b/src/orpc/server.ts new file mode 100644 index 0000000..34af679 --- /dev/null +++ b/src/orpc/server.ts @@ -0,0 +1,7 @@ +import { implement } from '@orpc/server' +import { contract } from './contract' + +// biome-ignore lint/complexity/noBannedTypes: 暂无 context +export type ORPCContext = {} + +export const os = implement(contract).$context() diff --git a/src/orpc/types.ts b/src/orpc/types.ts index c95875f..e3e814c 100644 --- a/src/orpc/types.ts +++ b/src/orpc/types.ts @@ -3,7 +3,7 @@ import type { InferContractRouterInputs, InferContractRouterOutputs, } from '@orpc/contract' -import type { contract } from './contracts' +import type { contract } from './contract' export type Contract = typeof contract export type RouterClient = ContractRouterClient