MCPcopy
hub / github.com/prisma/prisma / createHonoServer

Function createHonoServer

packages/query-plan-executor/src/server/server.ts:54–119  ·  view source on GitHub ↗
(app: App, options: Options)

Source from the content-addressed store, hash-verified

52type HonoServer = ReturnType<typeof createHonoServer>
53
54function createHonoServer(app: App, options: Options) {
55 type Env = {
56 Variables: {
57 requestId: string
58 resourceLimits: ResourceLimits
59 }
60 }
61
62 const server = new Hono<Env>()
63
64 return server
65 .onError((error, c) => {
66 log.error('Error processing request', {
67 error: util.inspect(error),
68 method: c.req.method,
69 pathname: c.req.path,
70 requestId: c.get('requestId'),
71 })
72 return getErrorResponse(error, c)
73 })
74 .use(fallbackLoggerMiddleware(options.perRequestLogContext))
75 .use(logMiddleware)
76 .use(clientTelemetryMiddleware)
77 .use(resourceLimitsMiddleware(options))
78 .get('/health', (c) => {
79 return c.json({ status: 'ok' })
80 })
81 .get('/connection-info', (c) => {
82 return c.json(app.getConnectionInfo() satisfies ConnectionInfoResponseBody)
83 })
84 .post('/query', zValidator('json', QueryRequestBody), async (c) => {
85 const request = c.req.valid('json')
86 const data = await app.query(
87 request.plan as QueryPlanNode,
88 request.params,
89 request.comments,
90 c.get('resourceLimits'),
91 null,
92 )
93 return c.json({ data } satisfies QueryResponseBody)
94 })
95 .post('/transaction/start', zValidator('json', TransactionStartRequestBody), async (c) => {
96 const result = await app.startTransaction(c.req.valid('json'), c.get('resourceLimits'))
97 c.header('Prisma-Transaction-Id', result.id)
98 return c.json(result satisfies TransactionStartResponseBody)
99 })
100 .post('/transaction/:txId/query', zValidator('json', QueryRequestBody), async (c) => {
101 const request = c.req.valid('json')
102 const data = await app.query(
103 request.plan as QueryPlanNode,
104 request.params,
105 request.comments,
106 c.get('resourceLimits'),
107 c.req.param('txId'),
108 )
109 return c.json({ data } satisfies QueryResponseBody)
110 })
111 .post('/transaction/:txId/commit', async (c) => {

Callers 1

createMethod · 0.85

Calls 13

fallbackLoggerMiddlewareFunction · 0.90
resourceLimitsMiddlewareFunction · 0.90
getErrorResponseFunction · 0.85
errorMethod · 0.80
inspectMethod · 0.80
headerMethod · 0.80
getConnectionInfoMethod · 0.65
startTransactionMethod · 0.65
commitTransactionMethod · 0.65
rollbackTransactionMethod · 0.65
getMethod · 0.45
onErrorMethod · 0.45

Tested by

no test coverage detected