@vtexlab/planner-contracts
Version:
Contracts to use in an Eventual-Driven Architecture (EDA)
35 lines (34 loc) • 1.15 kB
JavaScript
import { CaseType } from "../utils/enums";
import { toKebabCase } from "../utils/transformCase";
import { v4 as uuidv4 } from "uuid";
let messageContext;
export function setContext(context) {
messageContext = context;
}
export class Message {
constructor(baseData) {
var _a;
this.CorrelationId = (_a = baseData.correlationId) !== null && _a !== void 0 ? _a : uuidv4();
this.Timestamp = new Date();
this.Account = {
Id: baseData.accountId,
Name: baseData.accountName
};
this.AuthToken = baseData.authToken;
}
static topicName(caseType = CaseType.KebabCase) {
return `${messageContext}_${this.messageName(caseType)}`;
}
static queueName(consumerName, caseType = CaseType.KebabCase) {
return `${messageContext}_${consumerName}_${this.messageName(caseType)}`;
}
static messageName(caseType = CaseType.KebabCase) {
switch (caseType) {
case CaseType.KebabCase:
return toKebabCase(this.name);
case CaseType.NoCase:
default:
return this.name;
}
}
}