MCPcopy Create free account
hub / github.com/awslabs/aws-lambda-cpp / query

Function query

examples/dynamodb/main.cpp:72–161  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

70};
71
72Aws::Utils::Json::JsonValue query(criteria const cr, Aws::DynamoDB::DynamoDBClient const& client)
73{
74 using namespace Aws::DynamoDB;
75 using namespace Aws::DynamoDB::Model;
76 using namespace Aws::Utils::Json;
77
78 AWS_LOGSTREAM_DEBUG(
79 TAG,
80 "criteria is: product_id: " << cr.product_id << " start_date epoch: " << cr.start_date.Millis()
81 << " end_date epoch: " << cr.end_date.Millis());
82
83 QueryRequest query;
84
85 auto const& table_name = Aws::Environment::GetEnv("TABLE_NAME");
86 query.SetTableName(table_name);
87 query.SetKeyConditionExpression("#H = :h AND #R BETWEEN :s AND :e");
88 query.AddExpressionAttributeNames("#H", "product_id");
89 query.AddExpressionAttributeNames("#R", "date_time");
90
91 query.AddExpressionAttributeValues(":h", AttributeValue(cr.product_id));
92 AttributeValue date;
93 date.SetN(std::to_string(cr.start_date.Millis() / 1000));
94 query.AddExpressionAttributeValues(":s", date);
95
96 date.SetN(std::to_string(cr.end_date.Millis() / 1000));
97 query.AddExpressionAttributeValues(":e", date);
98
99 auto outcome = client.Query(query);
100 if (outcome.IsSuccess()) {
101 auto const& maps = outcome.GetResult().GetItems(); // returns vector of map<column, attibute value>
102 if (maps.empty()) {
103 AWS_LOGSTREAM_DEBUG(TAG, "No data returned from query");
104 return {};
105 }
106
107 // Schema
108 // string_attr :product_id, hash_key: true
109 // epoch_time_attr :date_time, range_key: true
110 // string_attr :product_title
111 // string_attr :marketplace
112 // string_attr :product_category
113 // date_attr :review_date
114 // integer_attr :star_rating
115 // float_attr :postive
116 // float_attr :mixed
117 // float_attr :neutral
118 // float_attr :negative
119
120 JsonValue output;
121 output.WithString("product", maps[0].find("product_title")->second.GetS());
122 output.WithString("category", maps[0].find("product_category")->second.GetS());
123 Aws::Utils::Array<JsonValue> sentiments(maps.size());
124 for (size_t i = 0; i < maps.size(); i++) {
125 JsonValue review;
126 auto&& m = maps[i];
127
128 auto it = m.find("review_date");
129 if (it != m.end()) {

Callers 1

my_handlerFunction · 0.85

Calls 3

GetEnvFunction · 0.85
sizeMethod · 0.45
endMethod · 0.45

Tested by

no test coverage detected