import { Op, Sequelize } from "sequelize"; import Queue from "../../models/Queue"; import User from "../../models/User"; import UserQueue from "../../models/UserQueue"; interface Request { userId?: string | number; profile?: string; raw?: boolean; userIds?: string | number } const ListUser = async ({ profile, userId, raw, userIds }: Request): Promise => { let where_clause = {}; if (userId && profile) { where_clause = { [Op.and]: [{ userId: userId }, { profile: profile }] }; } else if (userId) { where_clause = { [Op.and]: [{ userId: userId }] }; } else if (profile) { where_clause = { profile: profile }; } else if (userIds) { where_clause = { id: { [Op.in]: userIds } }; } const users = await User.findAll({ where: where_clause, raw, attributes: ["id", "name", "email"], include: [ { model: Queue, as: "queues", attributes: ["id", "name", "color"] } ], order: [["id", "ASC"]] }); return users; }; export default ListUser;