From 1782db93c1592ae59593d4a55de0c2eaf2a8dc84 Mon Sep 17 00:00:00 2001 From: SrGooglo Date: Wed, 24 May 2023 17:41:26 +0000 Subject: [PATCH] added `SearchController` --- .../endpoints/getQuickSearch.js | 20 ++++++++++++ .../SearchController/endpoints/getSearch.js | 28 ++++++++++++++++ .../src/controllers/SearchController/index.js | 32 ++----------------- 3 files changed, 50 insertions(+), 30 deletions(-) create mode 100644 packages/server/src/controllers/SearchController/endpoints/getQuickSearch.js create mode 100644 packages/server/src/controllers/SearchController/endpoints/getSearch.js diff --git a/packages/server/src/controllers/SearchController/endpoints/getQuickSearch.js b/packages/server/src/controllers/SearchController/endpoints/getQuickSearch.js new file mode 100644 index 00000000..29bf83cd --- /dev/null +++ b/packages/server/src/controllers/SearchController/endpoints/getQuickSearch.js @@ -0,0 +1,20 @@ +import getMutuals from "@services/getMutuals" + +export default { + method: "GET", + route: "/quick", + middlewares: ["withAuthentication"], + fn: async (req, res) => { + let mutuals = await getMutuals({ + from_user_id: req.user._id.toString(), + }).catch((error) => { + console.error(error) + + return [] + }) + + return res.json({ + friends: mutuals, + }) + } +} \ No newline at end of file diff --git a/packages/server/src/controllers/SearchController/endpoints/getSearch.js b/packages/server/src/controllers/SearchController/endpoints/getSearch.js new file mode 100644 index 00000000..208e35d2 --- /dev/null +++ b/packages/server/src/controllers/SearchController/endpoints/getSearch.js @@ -0,0 +1,28 @@ +import { User } from "@models" + +export default { + method: "GET", + route: "/", + middlewares: ["withOptionalAuthentication"], + fn: async (req, res) => { + const { keywords = "" } = req.query + + let suggestions = {} + + // search users by username or name + const users = await User.find({ + $or: [ + { username: { $regex: keywords, $options: "i" } }, + { fullName: { $regex: keywords, $options: "i" } }, + ], + }) + .limit(5) + .select("username fullName avatar verified") + + if (users.length > 0) { + suggestions["users"] = users + } + + return res.json(suggestions) + } +} \ No newline at end of file diff --git a/packages/server/src/controllers/SearchController/index.js b/packages/server/src/controllers/SearchController/index.js index b940512a..c2d10021 100755 --- a/packages/server/src/controllers/SearchController/index.js +++ b/packages/server/src/controllers/SearchController/index.js @@ -1,37 +1,9 @@ import { Controller } from "linebridge/dist/server" - -import { User, Post } from "@models" +import generateEndpointsFromDir from "linebridge/dist/server/lib/generateEndpointsFromDir" export default class SearchController extends Controller { static refName = "SearchController" static useRoute = "/search" - httpEndpoints = { - get: { - "/": { - middlewares: ["withOptionalAuthentication"], - fn: async (req, res) => { - const { keywords = "" } = req.query - - let suggestions = {} - - // search users by username or name - const users = await User.find({ - $or: [ - { username: { $regex: keywords, $options: "i" } }, - { fullName: { $regex: keywords, $options: "i" } }, - ], - }) - .limit(5) - .select("username fullName avatar verified") - - if (users.length > 0) { - suggestions["users"] = users - } - - return res.json(suggestions) - } - } - } - } + httpEndpoints = generateEndpointsFromDir(__dirname + "/endpoints") } \ No newline at end of file