@mwcp/otel
Version:
midway component for open telemetry
51 lines (37 loc) • 1.14 kB
text/typescript
import assert from 'node:assert'
import {
Controller,
Get,
Inject,
Logger,
Post,
} from '@midwayjs/core'
import { ILogger } from '@midwayjs/logger'
import { MConfig } from '@mwcp/share'
import { Trace, TraceService } from '##/lib/index.js'
import { Config, ConfigKey, Msg } from '##/lib/types.js'
import { DefaultOtelComponentService } from './default.service.js'
(`/_${ConfigKey.namespace}`)
export class DefaultOtelComponentController {
(ConfigKey.config) readonly config: Config
() readonly svc: DefaultOtelComponentService
() readonly traceSvc: TraceService
() logger: ILogger
(`/_${ConfigKey.namespace}/hello`)
('/hello')
('/hello')
async hello(): Promise<string> {
this.validateRoute()
const traceId = this.traceSvc.getTraceId()
assert(traceId, 'traceId is empty')
const msg = await this.svc.hello(Msg.hello)
const ret = `${msg}: ${traceId}`
return ret
}
validateRoute(): void {
/* c8 ignore next 3 */
if (! this.config.enableDefaultRoute) {
throw new Error('route is not enabled')
}
}
}