Files
speckle-server/packages/server/logging/requestContext.ts
T
Kristaps Fabians Geikins cf7f2593cb feat(server): add db metrics to GQL finished log entries (#3826)
* feat(server): add db metrics to GQL finished log entries

* logging for query errored as well
2025-01-15 13:40:00 +02:00

38 lines
880 B
TypeScript

import { REQUEST_ID_HEADER } from '@/logging/expressLogging'
import { asyncRequestContextEnabled } from '@/modules/shared/helpers/envHelper'
import type express from 'express'
import { AsyncLocalStorage } from 'node:async_hooks'
type StorageType = {
requestId: string
dbMetrics: {
totalDuration: number
totalCount: number
queries: string[]
}
}
const storage = asyncRequestContextEnabled()
? new AsyncLocalStorage<StorageType>()
: undefined
export const initiateRequestContextMiddleware: express.RequestHandler = (
req,
_res,
next
) => {
const reqId = req.headers[REQUEST_ID_HEADER] || 'unknown'
const store: StorageType = {
requestId: reqId as string,
dbMetrics: {
totalCount: 0,
totalDuration: 0,
queries: []
}
}
storage?.enterWith(store)
next()
}
export const getRequestContext = () => storage?.getStore()