Untitled
unknown
plain_text
9 months ago
1.8 kB
13
Indexable
public async createBusinessBankingEntityV3(
@Inject() event: APIGatewayProxyEventWithBosphorusDataAndB2BAuth,
@Body() createBankingEntityRequest: ICreateBusinessBankingEntityV3Request,
@Header("x-idempotency-key") idempotencyKey: string,
): Promise<IBankingEntityResponse> {
try {
logger.appendKeys(this.getRequestContext(event));
// Check for existing idempotent request
const existingRecord = await this.idempotencyService.findExistingRecord<IBankingEntityResponse>(
idempotencyKey,
"banking-entity",
"create"
);
if (existingRecord) {
if (existingRecord.status === 'SUCCESS') {
logger.info("Returning cached response for idempotent request", { idempotencyKey });
return existingRecord.response;
} else if (existingRecord.status === 'ERROR') {
logger.info("Returning cached error for idempotent request", { idempotencyKey });
throw new Error(existingRecord.errorDetails.message);
}
}
// Regular processing...
// ...
// Save successful response
await this.idempotencyService.saveRecord({
idempotencyKey,
resourceType: "banking-entity",
operation: "create",
resourceId: response.bankingEntityId,
response,
status: 'SUCCESS'
});
return response;
} catch (error) {
// Save error response
await this.idempotencyService.saveErrorRecord({
idempotencyKey,
resourceType: "banking-entity",
operation: "create",
errorDetails: {
message: error.message,
code: error.code || 'UNKNOWN_ERROR',
stack: error.stack
},
status: 'ERROR'
});
logger.error("Failed to create business banking entity", {
error,
idempotencyKey
});
genericExceptionHttpWrap(error);
}
}Editor is loading...
Leave a Comment