1 | 'use strict';
|
2 |
|
3 | var _ = require('./');
|
4 |
|
5 | var _2 = _interopRequireDefault(_);
|
6 |
|
7 | var _promisify = require('./utils/promisify');
|
8 |
|
9 | var _promisify2 = _interopRequireDefault(_promisify);
|
10 |
|
11 | var _sanitize = require('./utils/sanitize');
|
12 |
|
13 | var _sanitize2 = _interopRequireDefault(_sanitize);
|
14 |
|
15 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
16 |
|
17 | var uuid = require('node-uuid');
|
18 | var AWS = require('aws-sdk');
|
19 |
|
20 | function 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 |
|
\ | No newline at end of file |