import type { NextApiRequest, NextApiResponse } from "next"; import { withIronSessionApiRoute } from "iron-session/next"; import { sessionOptions } from "@/lib/session"; import { searchUsers } from "@/utils/users.be"; import { Type } from "@/interfaces/user"; export default withIronSessionApiRoute(handler, sessionOptions); async function handler(req: NextApiRequest, res: NextApiResponse) { if (!req.session.user && !req.headers["page"] && req.headers["page"] !== "register") { res.status(401).json({ ok: false }); return; } const { value, size, page, orderBy = "name", direction = "asc", type, entities } = req.query as { value?: string, size?: string; type?: Type; page?: string; orderBy?: string; direction?: "asc" | "desc", entities?: string }; const { users, total } = await searchUsers( value, size !== undefined ? parseInt(size) : undefined, page !== undefined ? parseInt(page) : undefined, { [orderBy]: direction === "asc" ? 1 : -1, }, {}, { ...(type ? { "type": type } : {}), ...(entities ? { "entities.id": entities.split(',') } : {}) } ); res.status(200).json({ users, total }); }