Skip to content

Commit ef1148b

Browse files
committed
feat: lookup traits from dynamodb if not found in ES
1 parent 1f86e20 commit ef1148b

File tree

1 file changed

+23
-0
lines changed

1 file changed

+23
-0
lines changed

src/services/MemberTraitService.js

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,29 @@ async function getTraits (currentUser, handle, query) {
5151
// Search with constructed query
5252
const docs = await esClient.search(esQuery)
5353
let result = _.map(docs.hits.hits, (item) => item._source)
54+
55+
if (result.length == 0) {
56+
logger.debug(`MemberTraits for member ${handle} not found in ES. Lookup in DynamoDB...`)
57+
const resultDynamo = await helper.query('MemberTrait', { userId: { eq: member.userId } })
58+
result = resultDynamo.map(traits => {
59+
traits = traits.originalItem();
60+
traits.traits = JSON.parse(traits.traits);
61+
62+
if (traits.createdAt != null) {
63+
traits.createdAt = new Date(traits.createdAt).getTime();
64+
}
65+
66+
if (traits.updatedAt != null) {
67+
traits.updatedAt = new Date(traits.createdAt).getTime();
68+
}
69+
70+
// index in ES so subsequent API calls pull data from ES
71+
helper.postBusEvent(constants.TOPICS.MemberTraitUpdated, traits)
72+
73+
return traits;
74+
})
75+
}
76+
5477
// keep only those of given trait ids
5578
if (traitIds) {
5679
result = _.filter(result, (item) => _.includes(traitIds, item.traitId))

0 commit comments

Comments
 (0)