Files
forgetmenot-django/api/db/index.js

62 lines
1.3 KiB
JavaScript

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,
};