UNPKG

deep-package-manager

Version:
103 lines (85 loc) 2.2 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.DynamoDBDriver = undefined; var _deepCore = require('deep-core'); var _deepCore2 = _interopRequireDefault(_deepCore); var _AbstractDriver = require('./AbstractDriver'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } class DynamoDBDriver extends _AbstractDriver.AbstractDriver { /** * @param {Object[]} args */ constructor(...args) { super(...args); this._dynamoDB = this.provisioning.dynamoDB; } /** * @returns {String} */ region() { return this.provisioning.dynamoDB.config.region; } /** * @returns {String} */ name() { return _deepCore2.default.AWS.Service.DYNAMO_DB; } /** * @returns {String[]} */ resourcesArns() { let tableArns = []; let config = this.property.config; let tablesObj = this.provisioning.config[_deepCore2.default.AWS.Service.DYNAMO_DB].tablesNames; for (let modelName in tablesObj) { if (tablesObj.hasOwnProperty(modelName)) { tableArns.push(`arn:aws:${this.name()}:${config.aws.region}:${config.awsAccountId}:table/${tablesObj[modelName]}`); } } return tableArns; } /** * @param {Function} cb */ tag(cb) { let ddbArns = this.resourcesArns(); if (ddbArns.length === 0) { cb(); return; } let promises = ddbArns.map(arn => { return this._dynamoDB.tagResource({ ResourceArn: arn, Tags: this.dynamoDbTags() }).promise(); }); Promise.all(promises).then(res => { console.debug('DynamoDB resources have been successfully tagged'); cb(); }).catch(err => { console.warn('Error while tagging DynamoDB resources: ', err); cb(); }); } /** * Convert tags object into array * @returns {Array} */ dynamoDbTags() { let result = []; let tagsObj = this.tags; for (let tagKey in tagsObj) { if (tagsObj.hasOwnProperty(tagKey)) { result.push({ Key: tagKey, Value: tagsObj[tagKey] }); } } return result; } } exports.DynamoDBDriver = DynamoDBDriver;