@codification/cutwater-aws
Version:
A library providing general functionality for TypeScript based AWS projects.
116 lines • 3.52 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.DynamoItem = void 0;
const CompoundValue_1 = require("./CompoundValue");
var ValueType;
(function (ValueType) {
ValueType["S"] = "S";
ValueType["N"] = "N";
ValueType["B"] = "B";
ValueType["SS"] = "SS";
ValueType["NS"] = "NS";
ValueType["BS"] = "BS";
ValueType["M"] = "M";
ValueType["L"] = "L";
ValueType["NULL"] = "NULL";
ValueType["BOOL"] = "BOOL";
})(ValueType || (ValueType = {}));
class DynamoItem {
constructor(item = {}) {
this.item = Object.assign({}, item);
}
prune() {
const removes = [];
Object.keys(this.item).forEach((att) => {
if (this.isEmtptyAttribute(att)) {
removes.push(att);
}
});
removes.forEach((att) => delete this.item[att]);
return this.item;
}
toSafeString(key) {
return this.toString(key, '');
}
toString(key, defaultValue) {
return this.getValue(key, ValueType.S) || defaultValue;
}
setString(key, value) {
if (value !== undefined) {
this.item[key] = {
S: value,
};
}
}
setStringParts(key, ...values) {
if (values && values.length > 0) {
this.setString(key, CompoundValue_1.CompoundValue.create(...values).value);
}
}
toStringSet(key, defaultValue = []) {
return this.getValue(key, ValueType.SS) || defaultValue;
}
setStringSet(key, value) {
if (value && value.length > 0) {
this.item[key] = {
SS: value,
};
}
}
toSafeNumber(key) {
return this.toNumber(key, -1);
}
toNumber(key, defaultValue) {
const value = this.getValue(key, ValueType.N);
return value ? +value : defaultValue;
}
setNumber(key, value) {
if (value !== undefined) {
this.item[key] = {
N: value.toString(),
};
}
}
toBoolean(key, defaultValue = false) {
const value = this.getValue(key, ValueType.BOOL);
return value !== undefined ? value : defaultValue;
}
setBoolean(key, value) {
if (value !== undefined) {
this.item[key] = {
BOOL: value,
};
}
}
toObject(key, defaultValue) {
const value = this.toString(key);
return value ? JSON.parse(value) : defaultValue;
}
setObject(key, value) {
if (value !== undefined) {
this.item[key] = {
S: JSON.stringify(value),
};
}
}
toStringPart(key, index, defaultValue) {
return CompoundValue_1.CompoundValue.create(this.getValue(key, ValueType.S)).getPart(index, defaultValue);
}
toNumberPart(key, index, defaultValue) {
const value = this.toStringPart(key, index);
return value ? +value : defaultValue;
}
getValue(key, type) {
return this.item[key] && this.item[key][type] ? this.item[key][type] : undefined;
}
isEmtptyAttribute(key) {
const attValue = this.item[key];
let attKey = Object.keys(attValue).find((k) => attValue[k] !== undefined);
if (!!attKey && Array.isArray(attValue[attKey]) && attValue[attKey].length === 0) {
attKey = undefined;
}
return attKey === undefined;
}
}
exports.DynamoItem = DynamoItem;
//# sourceMappingURL=DynamoItem.js.map