dynamodb-backup-restore
Advanced tools
Comparing version 0.2.3 to 0.2.4
@@ -6,4 +6,4 @@ { | ||
"dependencies": { | ||
"dynamodb-backup-restore ": "0.2.3" | ||
"dynamodb-backup-restore ": "0.2.4" | ||
} | ||
} |
@@ -12,3 +12,3 @@ 'use strict'; | ||
this.dbStreamData = new DbStreamData(config); | ||
this.dbInstanceData = new DbInstanceData(config); | ||
this.dbInstanceData = new DbInstanceData(config, this.dbRecord); | ||
} | ||
@@ -62,5 +62,2 @@ | ||
return this.dbInstanceData.retrieve() | ||
.then(records => { | ||
this.fromDbInstance(records); | ||
}) | ||
.catch(err => { | ||
@@ -67,0 +64,0 @@ throw err; |
@@ -6,5 +6,6 @@ 'use strict'; | ||
class DbInstanceData { | ||
constructor(config) { | ||
constructor(config, dbRecord) { | ||
this.DbTable = config.DbTable; | ||
this.DbRegion = config.DbRegion; | ||
this.dbRecord = dbRecord; | ||
} | ||
@@ -40,3 +41,3 @@ | ||
return new Promise((resolve, reject) => { | ||
let records = []; | ||
let dynamodb = new AWS.DynamoDB({ region: this.DbRegion }); | ||
@@ -46,3 +47,3 @@ let params = { | ||
ExclusiveStartKey: null, | ||
Limit: 25, | ||
Limit: 100, | ||
Select: 'ALL_ATTRIBUTES' | ||
@@ -54,33 +55,46 @@ }; | ||
function recursiveCall(params) { | ||
dynamodb.scan(params, function (err, data) { | ||
if (err) { | ||
return reject(err); | ||
} | ||
return new Promise((rs, rj) => { | ||
data.Items.forEach(function (item) { | ||
let id = {}; | ||
keys.forEach(key => { | ||
id[key.AttributeName] = item[key.AttributeName]; | ||
dynamodb.scan(params, (err, data) => { | ||
if (err) { | ||
return rj(err); | ||
} | ||
let records = []; | ||
data.Items.forEach((item) => { | ||
let id = {}; | ||
keys.forEach(key => { | ||
id[key.AttributeName] = item[key.AttributeName]; | ||
}); | ||
let record = { | ||
keys: JSON.stringify(id), | ||
data: JSON.stringify(item), | ||
event: 'INSERT' | ||
}; | ||
records.push(record); | ||
}); | ||
let record = { | ||
keys: JSON.stringify(id), | ||
data: JSON.stringify(item), | ||
event: 'INSERT' | ||
}; | ||
records.push(record); | ||
let promises = []; | ||
records.forEach(record => { | ||
promises.push(this.dbRecord.backup([record])); | ||
}); | ||
Promise.all(promises) | ||
.then(() => { | ||
numberOfRecords += data.Items.length; | ||
console.log('Retrieved ' + data.Items.length + ' records; total at ' + numberOfRecords + ' records.'); | ||
if (data.LastEvaluatedKey) { | ||
params.ExclusiveStartKey = data.LastEvaluatedKey; | ||
return recursiveCall.call(this, params); | ||
} | ||
return rs(); | ||
}) | ||
.catch(err => { | ||
rj(err); | ||
}); | ||
}); | ||
numberOfRecords += data.Items.length; | ||
console.log('Retrieved ' + data.Items.length + ' records; total at ' + numberOfRecords + ' records.'); | ||
if (data.LastEvaluatedKey) { | ||
params.ExclusiveStartKey = data.LastEvaluatedKey; | ||
recursiveCall.call(this, params); | ||
} else { | ||
resolve(records); | ||
} | ||
}); | ||
} | ||
recursiveCall.call(this, params); | ||
recursiveCall.call(this, params).then(() => { resolve() }); | ||
}); | ||
@@ -87,0 +101,0 @@ } |
{ | ||
"name": "dynamodb-backup-restore", | ||
"version": "0.2.3", | ||
"version": "0.2.4", | ||
"description": "NPM package for Backup and Restore AWS DynamoDB", | ||
@@ -5,0 +5,0 @@ "homepage": "https://github.com/Purple-Unicorns/DynamoDbBackUp", |
68169
1600