UNPKG

@replyke/express

Version:

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

55 lines (54 loc) 1.85 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const models_1 = require("../../../models"); const sequelize_1 = require("sequelize"); const config_1 = require("../../../config"); exports.default = async (req, res) => { try { const { query } = req.query; const projectId = req.project.id; const { sequelize } = (0, config_1.getCoreConfig)(); if (!query || typeof query !== "string") { res.status(400).json({ error: "Missing or invalid query parameter", code: "user/invalid-query", }); return; } const suggestions = await models_1.User.findAll({ where: { projectId, username: { [sequelize_1.Op.iLike]: `%${query}%`, // Case-insensitive search for usernames containing the query }, }, order: [ [ sequelize.literal(`"username" ILIKE '${query}%'`), // Prioritize usernames starting with the query "DESC", ], ["username", "ASC"], // Secondary alphabetical ordering ], limit: 5, attributes: { exclude: [ "hash", "salt", "email", "isVerified", "isActive", "lastActive", ], }, }); res.status(200).json(suggestions.map((i) => i.toJSON())); } catch (err) { console.error("Error fetching user suggestions: ", err); res.status(500).json({ error: "Internal server error", code: "user/server-error", details: err.message, }); } };