Skip to content
This repository was archived by the owner on Mar 10, 2024. It is now read-only.

Commit ebfa3d9

Browse files
committed
refactor: Use express
1 parent 5e4fd2f commit ebfa3d9

File tree

3 files changed

+32
-22
lines changed

3 files changed

+32
-22
lines changed

packages/api/package.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,12 @@
77
"@t3-oss/env-core": "^0.7.1",
88
"@trpc/server": "^10.44.1",
99
"@usevenice/trpc-openapi": "^1.3.8",
10+
"express": ">=5.0.0-beta.1",
1011
"trpc-panel": "^1.3.4",
1112
"zod": "^3.22.4",
1213
"zod-openapi": "^2.11.0"
14+
},
15+
"devDependencies": {
16+
"@types/express": "^4.17.17"
1317
}
1418
}

packages/api/router.ts

Lines changed: 26 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,12 @@
11
import { createHTTPServer } from '@trpc/server/adapters/standalone';
2-
import { createOpenApiHttpHandler, generateOpenApiDocument } from '@usevenice/trpc-openapi';
3-
import http from 'http';
2+
import { createOpenApiExpressMiddleware, generateOpenApiDocument } from '@usevenice/trpc-openapi';
3+
import express from 'express';
44
import { renderTrpcPanel } from 'trpc-panel';
55
import { z } from 'zod';
66
import { createContext, t } from './context';
77
import { engagementRouter } from './routers/engagement';
88

99
export const metaRouter = t.router({
10-
hello: t.procedure
11-
.meta({ openapi: { method: 'GET', path: '/hello' } })
12-
.input(z.void())
13-
.output(z.string())
14-
.query(() => 'world'),
1510
getOpenApiSpec: t.procedure
1611
.meta({ openapi: { method: 'GET', path: '/openapi.json' } })
1712
.input(z.void())
@@ -21,36 +16,45 @@ export const metaRouter = t.router({
2116

2217
export const appRouter = t.mergeRouters(t.router({ engagement: engagementRouter }), metaRouter);
2318

19+
const port = 3000;
20+
2421
export const openApiSpec = generateOpenApiDocument(appRouter, {
2522
title: 'Supaglue OpenAPI',
2623
openApiVersion: '3.1.0',
2724
version: '0.0.1',
28-
baseUrl: 'http://localhost:3000',
25+
baseUrl: `http://localhost:${port}`,
2926
});
3027

3128
if (require.main === module) {
32-
// trpc server
29+
// openapi server, running in the Docker container with express
30+
const app = express();
31+
app.get('/', (_req, res) => {
32+
res.send('Our current API routes');
33+
});
34+
app.use(
35+
createOpenApiExpressMiddleware({
36+
router: appRouter,
37+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
38+
createContext: ({ req }) => createContext({ headers: req.headers }),
39+
})
40+
);
41+
42+
app.listen(port, () => {
43+
// eslint-disable-next-line no-console
44+
console.log(`Server is running on port ${port}`);
45+
});
46+
47+
// trpc server, running in api routes in next.js for our internal management ui use
3348
createHTTPServer({
3449
router: appRouter,
3550
// eslint-disable-next-line @typescript-eslint/no-explicit-any
3651
createContext: ({ req }) => createContext({ headers: req.headers }),
3752
middleware(req, res, next) {
3853
if (req.url === '/_panel') {
39-
res.end(renderTrpcPanel(appRouter, { url: 'http://localhost:3000' }));
54+
res.end(renderTrpcPanel(appRouter, { url: 'http://localhost:3001' }));
4055
return;
4156
}
4257
next();
4358
},
44-
}).listen(3000);
45-
46-
// openapi server
47-
http
48-
.createServer(
49-
createOpenApiHttpHandler({
50-
router: appRouter,
51-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
52-
createContext: ({ req }) => createContext({ headers: req.headers }),
53-
})
54-
)
55-
.listen(3001);
59+
}).listen(3001);
5660
}

yarn.lock

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6341,7 +6341,9 @@ __metadata:
63416341
"@supaglue/db": "workspace:*"
63426342
"@t3-oss/env-core": ^0.7.1
63436343
"@trpc/server": ^10.44.1
6344+
"@types/express": ^4.17.17
63446345
"@usevenice/trpc-openapi": ^1.3.8
6346+
express: ">=5.0.0-beta.1"
63456347
trpc-panel: ^1.3.4
63466348
zod: ^3.22.4
63476349
zod-openapi: ^2.11.0

0 commit comments

Comments
 (0)