UNPKG

@codification/cutwater-aws

Version:

A library providing general functionality for TypeScript based AWS projects.

116 lines 3.52 kB
"use strict"; 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