Skip to content

Commit

Permalink
feat: add correlation id to all useCases
Browse files Browse the repository at this point in the history
  • Loading branch information
sebbi08 committed Sep 13, 2024
1 parent c8ff83e commit 8844664
Showing 1 changed file with 17 additions and 9 deletions.
26 changes: 17 additions & 9 deletions packages/runtime/src/useCases/common/UseCase.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import { ParsingError, ServalError, ValidationError } from "@js-soft/ts-serval";
import { ApplicationError, Result } from "@js-soft/ts-utils";
import { CoreError } from "@nmshd/core-types";
import { RequestError } from "@nmshd/transport";
import correlationIdLib from "correlation-id";
import stringifySafe from "json-stringify-safe";
import { PlatformErrorCodes } from "./PlatformErrorCodes";
import { RuntimeErrors } from "./RuntimeErrors";
Expand All @@ -12,19 +13,26 @@ export abstract class UseCase<IRequest, IResponse> {
public constructor(private readonly requestValidator?: IValidator<IRequest>) {}

public async execute(request: IRequest): Promise<Result<IResponse>> {
if (this.requestValidator) {
const validationResult = await this.requestValidator.validate(request);
const executeWithCorrelationId = async (): Promise<Result<IResponse>> => {
if (this.requestValidator) {
const validationResult = await this.requestValidator.validate(request);

if (validationResult.isInvalid()) {
return this.validationFailed(validationResult);
if (validationResult.isInvalid()) {
return this.validationFailed(validationResult);
}
}
}

try {
return await this.executeInternal(request);
} catch (e) {
return this.failingResultFromUnknownError(e);
try {
return await this.executeInternal(request);
} catch (e) {
return this.failingResultFromUnknownError(e);
}
};
const correlationID = correlationIdLib.getId();
if (correlationID === undefined) {
return await correlationIdLib.withId(executeWithCorrelationId);
}
return await correlationIdLib.withId(correlationID, executeWithCorrelationId);
}

private failingResultFromUnknownError(error: unknown): Result<any> {
Expand Down

0 comments on commit 8844664

Please sign in to comment.