Files
eg-api/services/db/index.js
2018-09-20 06:46:02 -05:00

71 lines
1.5 KiB
JavaScript

const dynamoClient = require('./dynamoClient');
const create = async (tableName, item) => {
const fullItem = {...item, created_at: Date.now()};
await dynamoClient.put({
TableName: tableName,
Item: fullItem
}).promise();
// put does not return saved item, just return our object
return fullItem;
};
const get = async (tableName, keyMap) => {
const res = await dynamoClient.get({
TableName: tableName,
Key: keyMap
}).promise();
return res && res.Item;
};
const scan = async (tableName) => {
const res = await dynamoClient.scan({
TableName: tableName
}).promise();
return res && res.Items;
};
const queryByID = async (tableName, idKeyName, id) => {
// querying by id can be used when we are querying a table
// that has a sortKey, but we don't need to use the sortKey
const res = await dynamoClient.query({
TableName: tableName,
KeyConditionExpression: "#id = :idValue",
ExpressionAttributeNames: {
"#id": idKeyName,
},
ExpressionAttributeValues: {
":idValue": id,
}
}).promise();
return res && res.Items;
};
const update = async (tableName, keyMap, ue, eav) => {
const res = await dynamoClient.update({
TableName: tableName,
Key: keyMap,
UpdateExpression: ue,
ExpressionAttributeValues: eav,
ReturnValues: 'UPDATED_NEW'
}).promise();
console.log('update res', res);
return res;
};
module.exports = {
client: dynamoClient,
create,
get,
scan,
queryByID,
update
};