UNPKG

3.11 kBJavaScriptView Raw
1'use strict';
2
3var _ = require('./');
4
5var _2 = _interopRequireDefault(_);
6
7var _promisify = require('./utils/promisify');
8
9var _promisify2 = _interopRequireDefault(_promisify);
10
11var _sanitize = require('./utils/sanitize');
12
13var _sanitize2 = _interopRequireDefault(_sanitize);
14
15function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
16
17var uuid = require('node-uuid');
18var AWS = require('aws-sdk');
19
20function sanitizeParams(params) {
21 return (0, _sanitize2.default)(params, {
22 name: 'string',
23 hashKeyName: 'string',
24 hashKeyType: 'string',
25 rangeKeyName: 'string',
26 rangeKeyType: 'string',
27 readCapacity: 'number',
28 writeCapacity: 'number',
29 localIndexes: 'array',
30 globalIndexes: 'array'
31 });
32 params.localIndexes = params.localIndexes.map(function (index) {
33 return (0, _sanitize2.default)(index, {
34 name: 'string',
35 rangeKeyName: 'string',
36 rangeKeyType: 'string'
37 });
38 });
39 params.globalIndexes = params.globalIndexes.map(function (index) {
40 return (0, _sanitize2.default)(index, {
41 name: 'string',
42 hashKeyName: 'string',
43 hashKeyType: 'string',
44 rangeKeyName: 'string',
45 rangeKeyType: 'string',
46 readCapacity: 'number',
47 writeCapacity: 'number'
48 });
49 });
50}
51
52_2.default.prototype._findTable = function (data, params) {
53 return data.dynamo.tables.find(function (table) {
54 return table.name === params.name;
55 });
56};
57
58_2.default.prototype.dynamoCreateTable = function (params) {
59 var _this = this;
60
61 return Promise.resolve().then(function () {
62 params = sanitizeParams(params);
63 return _this.readConfig();
64 }).then(function (data) {
65 var table = _this._findTable(data, params);
66 if (table) {
67 return Promise.reject(new Error('A table named ' + params.name + ' already exists'));
68 }
69 var tables = data.dynamo.tables;
70 tables.push(params);
71 return _this.writeConfig(data);
72 }).then(function () {
73 return _this.emit('dynamo_changed');
74 });
75};
76
77_2.default.prototype.dynamoEditTable = function (params) {
78 var _this2 = this;
79
80 return Promise.resolve().then(function () {
81 params = sanitizeParams(params);
82 return _this2.readConfig();
83 }).then(function (data) {
84 var tables = data.dynamo.tables;
85 var table = _this2._findTable(data, params);
86 if (!table) {
87 return Promise.reject(new Error('No table named ' + params.name + ' found'));
88 }
89 Object.assign(table, params);
90 return _this2.writeConfig(data);
91 }).then(function () {
92 return _this2.emit('dynamo_changed');
93 });
94};
95
96_2.default.prototype.dynamoDeleteTable = function (params) {
97 var _this3 = this;
98
99 return this.readConfig().then(function (data) {
100 var tables = data.dynamo.tables;
101 var table = _this3._findTable(data, params);
102 if (!table) {
103 return Promise.reject(new Error('No table named ' + params.functionName + ' found'));
104 }
105 tables.splice(tables.indexOf(table), 1);
106 return _this3.writeConfig(data);
107 }).then(function () {
108 return _this3.emit('dynamo_changed');
109 });
110};
111//# sourceMappingURL=dynamo.js.map
\No newline at end of file