-
Notifications
You must be signed in to change notification settings - Fork 0
/
dynamoDB.js
89 lines (76 loc) · 2.23 KB
/
dynamoDB.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
var helper = require('./helper'),
Q = require('q');
var DynamoDB = new helper.AWS.DynamoDB(),
TABLE_NAME = 'CS553';
// NOTE: create table
exports.createTable = function (tableName, callback) {
var deferred = Q.defer();
var params = {
AttributeDefinitions: [ /* required */
{
AttributeName: 'taskId',
/* required */
AttributeType: 'S' /* required */
}
],
KeySchema: [ /* required */
{
AttributeName: 'taskId',
/* required */
KeyType: 'HASH' /* required */
}
],
ProvisionedThroughput: { /* required */
ReadCapacityUnits: 1,
/* required */
WriteCapacityUnits: 1 /* required */
},
TableName: tableName || TABLE_NAME,
/* required */
};
DynamoDB.createTable(params, function (err, data) {
if (err) deferred.reject("createTable() : " + err + err.stack);
else deferred.resolve(data);
});
return deferred.promise.nodeify(callback);
};
// NOTE: Add item to table (key : taskId)
exports.addItem = function (tableName, value, callback) {
var deferred = Q.defer();
var params = {
Item: { /* required */
taskId: {
S: value
}
},
TableName: tableName || TABLE_NAME,
/* required */
Expected: {
taskId: {
Exists: false
}
}
};
DynamoDB.putItem(params, function (err, data) {
if (err) deferred.reject("putItem() : " + err + err.stack);
else deferred.resolve(data);
});
return deferred.promise.nodeify(callback);
};
// NOTE: Get item from table (key : taskId)
exports.getItem = function (tableName, value, callback) {
var deferred = Q.defer();
var params = {
Key: { /* required */
taskId: {
S: value
}
},
TableName: tableName || TABLE_NAME
};
DynamoDB.getItem(params, function (err, data) {
if (err) deferred.reject("getItem() : " + err + err.stack);
else deferred.resolve(data);
});
return deferred.promise.nodeify(callback);
};