-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathexpress.ts
More file actions
34 lines (28 loc) · 947 Bytes
/
express.ts
File metadata and controls
34 lines (28 loc) · 947 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
import express from 'express';
import { createExpressMiddleware } from '@trpc/server/adapters/express';
import { initTRPC } from '@trpc/server';
import superjson from 'superjson';
import { z } from 'zod';
import { Router, Query, Input, UseZod, createClassRouter } from '../src';
interface Ctx { }
const t = initTRPC.context<Ctx>().create({ transformer: superjson });
@Router()
class HelloController {
@Query('hello')
@UseZod(z.object({ name: z.string() }), z.string())
hello(@Input() input: { name: string }) {
return `Hello ${input.name}`;
}
}
const { router } = createClassRouter({
t,
controllers: { helloController: new HelloController() },
});
const app = express();
app.use('/trpc', createExpressMiddleware({ router, createContext: () => ({}) }));
async function main() {
await app.listen(3000);
const caller = router.createCaller({});
console.log(await caller.helloController.hello({ name: 'world' }));
}
main();