@mbc-cqrs-serverless/core
Version:
CQRS and event base core
67 lines • 2.35 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ttlSk = exports.seqPk = exports.masterPk = void 0;
exports.addSortKeyVersion = addSortKeyVersion;
exports.getSortKeyVersion = getSortKeyVersion;
exports.removeSortKeyVersion = removeSortKeyVersion;
exports.generateId = generateId;
exports.getTenantCode = getTenantCode;
exports.isS3AttributeKey = isS3AttributeKey;
exports.toS3AttributeKey = toS3AttributeKey;
exports.parseS3AttributeKey = parseS3AttributeKey;
const constants_1 = require("../constants");
const key_1 = require("../constants/key");
function addSortKeyVersion(sk, version) {
return `${removeSortKeyVersion(sk)}${key_1.VER_SEPARATOR}${version}`;
}
function getSortKeyVersion(sk) {
const lastDivIdx = sk.lastIndexOf(key_1.VER_SEPARATOR);
if (lastDivIdx === -1) {
return key_1.VERSION_LATEST;
}
return +sk.substring(lastDivIdx + 1);
}
function removeSortKeyVersion(sk) {
const lastDivIdx = sk.lastIndexOf(key_1.VER_SEPARATOR);
if (lastDivIdx === -1) {
return sk;
}
return sk.substring(0, lastDivIdx);
}
function generateId(pk, sk) {
return `${pk}${key_1.KEY_SEPARATOR}${removeSortKeyVersion(sk)}`;
}
function getTenantCode(pk) {
const lastDivIdx = pk.lastIndexOf(key_1.KEY_SEPARATOR);
if (lastDivIdx === -1) {
return;
}
return pk.substring(lastDivIdx + 1);
}
const S3_PREFIX = 's3://';
const S3_PREFIX_LEN = S3_PREFIX.length;
function isS3AttributeKey(attributes) {
if (typeof attributes === 'string' && attributes.startsWith(S3_PREFIX)) {
return true;
}
return false;
}
function toS3AttributeKey(bucket, key) {
return `${S3_PREFIX}${bucket}/${key}`;
}
function parseS3AttributeKey(s3Uri) {
const sepIdx = s3Uri.indexOf('/', S3_PREFIX_LEN);
const bucket = s3Uri.substring(S3_PREFIX_LEN, sepIdx);
const key = s3Uri.substring(1 + sepIdx);
return {
bucket,
key,
};
}
const masterPk = (tenantCode) => `MASTER${key_1.KEY_SEPARATOR}${tenantCode || constants_1.DEFAULT_TENANT_CODE}`;
exports.masterPk = masterPk;
const seqPk = (tenantCode) => `SEQ${key_1.KEY_SEPARATOR}${tenantCode || constants_1.DEFAULT_TENANT_CODE}`;
exports.seqPk = seqPk;
const ttlSk = (tableName) => `TTL${key_1.KEY_SEPARATOR}${tableName}`;
exports.ttlSk = ttlSk;
//# sourceMappingURL=key.js.map