Skip to content
This repository was archived by the owner on Jan 21, 2019. It is now read-only.

Commit 8d6bc8a

Browse files
authored
Merge pull request #19 from chalabov/MAYH-6097
remove bluebird
2 parents d6ea34f + c9d07b7 commit 8d6bc8a

File tree

3 files changed

+107
-156
lines changed

3 files changed

+107
-156
lines changed

package.json

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,7 @@
2828
"url": "https://github.com/packetloop/connect-dynamodb-session/issues"
2929
},
3030
"peerDependencies": {
31-
"aws-sdk": "2",
32-
"bluebird": "3"
31+
"aws-sdk": "2"
3332
},
3433
"devDependencies": {
3534
"aws-sdk": "2.3.6",
@@ -39,7 +38,6 @@
3938
"babel-plugin-add-module-exports": "0.2.1",
4039
"babel-preset-es2015": "6.6.0",
4140
"blue-tape": "0.2.0",
42-
"bluebird": "3.3.5",
4341
"codacy-coverage": "1.1.3",
4442
"eslint": "2.8.0",
4543
"eslint-config-airbnb": "8.0.0",

src/dynamo.js

Lines changed: 21 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,82 +1,73 @@
11
import AWS from 'aws-sdk';
2-
import Promise from 'bluebird';
32

43
export default ({awsClient: aws, region, endpoint, tableName: TableName,
54
consistentRead: ConsistentRead = true,
65
readCapacity: ReadCapacityUnits = 5,
76
writeCapacity: WriteCapacityUnits = 5}) => {
87
const awsClient = aws || new AWS.DynamoDB({region, endpoint});
98

10-
const deleteItem = id => Promise.fromCallback(cb =>
11-
awsClient.deleteItem({TableName, Key: {id: {S: id}}}, cb)
12-
);
9+
const deleteItem = id => awsClient.deleteItem({TableName, Key: {id: {S: id}}}).promise();
1310

1411
return {
1512
init: (autoCreate = false) => {
16-
const describe = Promise.fromCallback(cb => awsClient.describeTable({TableName}, cb));
13+
const describe = awsClient.describeTable({TableName}).promise();
1714
if (autoCreate) {
18-
return describe.catch(() => Promise.fromCallback(cb =>
15+
return describe.catch(() =>
1916
awsClient.createTable({
2017
TableName,
2118
AttributeDefinitions: [{AttributeName: 'id', AttributeType: 'S'}],
2219
KeySchema: [{AttributeName: 'id', KeyType: 'HASH'}],
2320
ProvisionedThroughput: {ReadCapacityUnits, WriteCapacityUnits}
24-
}, cb))
21+
}).promise()
2522
);
2623
}
2724
return describe;
2825
},
2926

30-
get: id => Promise.fromCallback(cb =>
31-
awsClient.getItem({TableName, ConsistentRead, Key: {id: {S: id}}}, cb)
32-
).then(data => {
33-
if (data.Item && data.Item.content && data.Item.expires) {
34-
return {
35-
content: JSON.parse(data.Item.content.S.toString()),
36-
expires: Number(data.Item.expires.N)
37-
};
38-
}
39-
return null;
40-
}),
27+
get: id => awsClient.getItem({TableName, ConsistentRead, Key: {id: {S: id}}}).promise()
28+
.then(data => {
29+
if (data.Item && data.Item.content && data.Item.expires) {
30+
return {
31+
content: JSON.parse(data.Item.content.S.toString()),
32+
expires: Number(data.Item.expires.N)
33+
};
34+
}
35+
return null;
36+
}),
4137

42-
put: (id, expires, content) => Promise.fromCallback(cb =>
38+
put: (id, expires, content) =>
4339
awsClient.putItem({
4440
TableName, Item: {
4541
id: {S: id},
4642
expires: {N: expires.toString()},
4743
content: {S: JSON.stringify(content)}
4844
}
49-
}, cb)
50-
),
45+
}).promise(),
5146

52-
setExpires: (id, expires) => Promise.fromCallback(cb =>
47+
setExpires: (id, expires) =>
5348
awsClient.updateItem({
5449
TableName,
5550
Key: {id: {S: id}},
5651
UpdateExpression: 'SET expires = :value',
5752
ExpressionAttributeValues: {':value': {N: expires.toString()}}
58-
}, cb)
59-
),
53+
}).promise(),
6054

6155
delete: deleteItem,
6256

6357
deleteExpired: when => {
64-
const scan = startKey => Promise.fromCallback(cb =>
58+
const scan = startKey =>
6559
awsClient.scan({
6660
TableName,
6761
FilterExpression: 'expires < :when',
6862
ExpressionAttributeValues: {':when': {N: when.toString()}},
6963
ProjectionExpression: 'id',
7064
ExclusiveStartKey: startKey
71-
}, cb)
72-
);
65+
}).promise();
7366

7467
const deletePage = ({scanned, deleted}, startKey = null) =>
7568
// perform the scan to find expired sessions
7669
scan(startKey)
77-
// use Promise.each to delete each of them one by one so we don't use all the
78-
// provisioned capacity
79-
.then(data => Promise.each(data.Items.map(i => i.id.S), deleteItem)
70+
.then(data => Promise.all(data.Items.map(i => i.id.S), deleteItem)
8071
// once all the sessions are deleted, work out if there are more results to scan
8172
.then(ids => {
8273
const lastKey = data.LastEvaluatedKey;

0 commit comments

Comments
 (0)