Refactor with base actions methods

This commit is contained in:
2021-01-25 23:28:04 -06:00
parent 5f23b5b633
commit 9d98ad4e84
11 changed files with 204 additions and 222 deletions

61
api/db/index.js Normal file
View File

@@ -0,0 +1,61 @@
const AWS = require(`aws-sdk`);
const shortid = require(`shortid`);
const commonSchemas = require(`../validation/commonSchemas`);
const validation = require(`../validation`);
const dynamodb = new AWS.DynamoDB.DocumentClient({
region: process.env.AWS_REGION,
});
const defaultParams = {
TableName: process.env.db,
};
const put = async (kind, item) => {
const params = {
...defaultParams,
Item: {
...item,
sk: kind,
sk2: shortid.generate(),
createdAt: Date.now(),
updatedAt: Date.now(),
},
};
await dynamodb.put(params).promise();
};
const getByKey = async (key) => {
const params = {
...defaultParams,
KeyConditionExpression: `hk = :hk`,
ExpressionAttributeValues: { ":hk": key },
};
const obj = await dynamodb.query(params).promise();
return obj.Items && obj.Items[0] ? obj.Items[0] : null;
};
const getById = async (kind, id) => {
validation.validateOrThrow(commonSchemas.id, id);
const params = {
...defaultParams,
IndexName: process.env.dbIndex1,
KeyConditionExpression: `sk2 = :sk2 and sk = :sk`,
ExpressionAttributeValues: {
":sk2": id,
":sk": kind,
},
};
const obj = await dynamodb.query(params).promise();
return obj.Items && obj.Items[0] ? obj.Items[0] : null;
};
module.exports = {
put,
getByKey,
getById,
};