@vtexlab/planner-contracts
Version:
Contracts to use in an Eventual-Driven Architecture (EDA)
40 lines (39 loc) • 1.39 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Message = exports.setContext = void 0;
const enums_1 = require("../utils/enums");
const transformCase_1 = require("../utils/transformCase");
const uuid_1 = require("uuid");
let messageContext;
function setContext(context) {
messageContext = context;
}
exports.setContext = setContext;
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 topicName(caseType = enums_1.CaseType.KebabCase) {
return `${messageContext}_${this.messageName(caseType)}`;
}
static queueName(consumerName, caseType = enums_1.CaseType.KebabCase) {
return `${messageContext}_${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;