-
Notifications
You must be signed in to change notification settings - Fork 7
Expand file tree
/
Copy pathprocessGroceriesUpdate.js
More file actions
70 lines (64 loc) · 2 KB
/
processGroceriesUpdate.js
File metadata and controls
70 lines (64 loc) · 2 KB
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
import AWS from 'aws-sdk';
import _ from 'lodash';
import map from 'lodash/map';
import awsConfigUpdate from '../../utils/awsConfigUpdate';
import { GROCERIES_TABLE_NAME, GROCERIES_TOP_SELLING_TABLE_NAME } from '../../dynamoDb/constants';
awsConfigUpdate();
const documentClient = new AWS.DynamoDB.DocumentClient();
const getBaseGroceriesParams = () => ({
TableName: GROCERIES_TABLE_NAME,
ExpressionAttributeNames: {
'#groceryId': 'groceryId',
'#category': 'category',
'#subCategory': 'subCategory',
'#name': 'name',
'#url': 'url',
'#availableQty': 'availableQty',
'#soldQty': 'soldQty',
'#price': 'price',
},
ProjectionExpression: "#groceryId, #category, #subCategory, #name, #url, #availableQty, #soldQty, #price",
});
export const main = (event, content, callback) => {
const documentClient = new AWS.DynamoDB.DocumentClient();
const queryPromise = documentClient.scan(getBaseGroceriesParams()).promise();
queryPromise
.then((data) => {
const uniqueCategories = _
.chain(data.Items)
.uniqBy('category')
.map(data => data.category)
.map((category) => {
const filteredResult = _
.chain(data.Items)
.filter(grocery => (grocery.category === category))
.orderBy(['soldQty'], ['desc'])
.take(3)
.value();
return {
PutRequest: {
Item: {
category,
groceries: filteredResult,
}
}
}
})
.value();
const updateTopSellingTableParams = {
RequestItems: {
[GROCERIES_TOP_SELLING_TABLE_NAME]: uniqueCategories
}
}
documentClient.batchWrite(updateTopSellingTableParams, function (err, data) {
if (err) {
console.log('Err ' + err.message);
} else {
console.log('Update successful');
}
});
})
.catch((error) => {
console.log('Update unsuccessful ' + error.message);
});
}