import db from "../../../../lib/db"; import { authenticatedJsonApi } from "../../../../lib/jsonapi"; import models from "../../../../lib/models"; const handler = authenticatedJsonApi(async (req, res, session) => { const { method } = req; const { user } = session; switch (method) { case "GET": await getEntity(req, res, user); break; default: res.setHeader("Allow", ["GET"]); res.status(405).send(`Method ${method} Not Allowed`); } }); const getEntity = async (req, res, user) => { const { entityName, entityId } = req.query; if (!models[entityName]) { res.status(404); return; } var model = models[entityName]; if (!model.validateId(entityId)) { console.warn(model.validateId.errors); res.status(404); return; } const params = { TableName: process.env.FMN_DYNAMODB_TABLENAME, KeyConditionExpression: "hk = :hk AND sk = :sk", ExpressionAttributeValues: { ":hk": `user#${user.sub}`, ":sk": `${entityName}#${entityId}`, }, }; let entities = await db.query(params).promise(); if (entities.Items.length == 1) { res.status(200).json(entities.Items[0]); } else { res.status(404); } }; export default handler;