@replyke/express
Version:
Replyke: Build interactive apps with social features like comments, votes, feeds, user lists, notifications, and more.
44 lines (43 loc) • 1.63 kB
JavaScript
;
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 } = 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;
}
// Search for sub-lists using Sequelize's findAll method.
const subLists = (await models_1.List.findAll({
where: {
projectId,
userId: loggedInUserId,
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,
});
}
};