@vtexlab/planner-contracts
Version:
Contracts to use in an Eventual-Driven Architecture (EDA)
39 lines (38 loc) • 1.4 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Message = void 0;
const enums_1 = require("../utils/enums");
const transformCase_1 = require("../utils/transformCase");
const uuid_1 = require("uuid");
const context_1 = require("../decorators/context");
class Message {
constructor(baseData) {
var _a;
this.CorrelationId = (_a = baseData.correlationId) !== null && _a !== void 0 ? _a : (0, uuid_1.v4)();
this.Timestamp = new Date();
this.Account = {
Id: baseData.accountId,
Name: baseData.accountName
};
this.AuthToken = baseData.authToken;
}
static getContext() {
return (0, context_1.getMessageContext)(this);
}
static topicName(caseType = enums_1.CaseType.KebabCase) {
return `${this.getContext()}_${this.messageName(caseType)}`;
}
static queueName(consumerName, caseType = enums_1.CaseType.KebabCase) {
return `${this.getContext()}_${consumerName}_${this.messageName(caseType)}`;
}
static messageName(caseType = enums_1.CaseType.KebabCase) {
switch (caseType) {
case enums_1.CaseType.KebabCase:
return (0, transformCase_1.toKebabCase)(this.name);
case enums_1.CaseType.NoCase:
default:
return this.name;
}
}
}
exports.Message = Message;