-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.js
45 lines (32 loc) · 1007 Bytes
/
index.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
#!/usr/bin/env node
const unmarshalItem = require('dynamodb-marshaler').unmarshalItem;
const process = require('process');
process.stdin.setEncoding('utf8');
let input = '';
process.stdin.on('readable', () => {
var chunk = process.stdin.read();
if (chunk !== null) {
input += chunk;
}
});
process.stdin.on('end', () => {
const data = JSON.parse(input);
let result = '';
if(data.Item) result = processItem(data);
if(data.Items) result = processItems(data);
if(data.Responses) result = processBatch(data);
process.stdout.write(JSON.stringify(result, null, 4) + '\n');
});
function processItem(data) {
return unmarshalItem(data.Item);
}
function processItems(data) {
return data.Items.map(unmarshalItem);
}
function processBatch(data) {
const tables = Object.keys(data.Responses);
return tables.reduce((result, tableName) => {
result[tableName] = data.Responses[tableName].map(unmarshalItem);
return result;
}, {});
}