UNPKG

@replyke/express

Version:

Replyke: Build interactive apps with social features like comments, votes, feeds, user lists, notifications, and more.

59 lines (58 loc) 2.1 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const models_1 = require("../../../models"); const populateList_1 = __importDefault(require("../../../helpers/populateList")); exports.default = async (req, res) => { try { // Extract parentId from query parameters. const { listId: parentListId, userId: userIdProp } = req.params; const loggedInUserId = req.userId; const projectId = req.project.id; // Validate the presence of required parameters. if (!parentListId || typeof parentListId !== "string") { res.status(400).json({ error: "Missing required parameters in request query", code: "list/missing-params", }); return; } let userId = null; if ((req.isMaster || req.isService) && userIdProp) { userId = userIdProp; } else if (loggedInUserId) { userId = loggedInUserId; } // Validate the presence of userId. if (typeof userId !== "string") { res.status(400).json({ error: "Missing userId", code: "list/missing-data", }); return; } // Search for sub-lists using Sequelize's findAll method. const subLists = (await models_1.List.findAll({ where: { projectId, userId, parentId: parentListId, }, })); const populatedSubLists = await Promise.all(subLists.map(async (subList) => { return await (0, populateList_1.default)(subList); })); res.status(200).send(populatedSubLists); } catch (err) { console.error("Error fetching sub-lists: ", err); res.status(500).json({ error: "Server error", code: "list/server-error", details: err.message, }); } };