mirror of
https://gitlab.com/comunic/comunicapiv2
synced 2025-06-20 00:25:17 +00:00
Add search support
This commit is contained in:
@ -135,6 +135,8 @@ export const Routes : Route[] = [
|
||||
{path: "/search/user", cb: (h) => SearchController.SearchUser(h)},
|
||||
{path: "/user/search", cb: (h) => SearchController.SearchUser(h)}, // Legacy
|
||||
|
||||
{path: "/search/global", cb: (h) => SearchController.SearchGlobal(h)},
|
||||
|
||||
|
||||
// Groups controller
|
||||
{path: "/groups/create", cb: (h) => GroupsController.Create(h)},
|
||||
|
@ -1,5 +1,6 @@
|
||||
import { RequestHandler } from "../entities/RequestHandler";
|
||||
import { UserHelper } from "../helpers/UserHelper";
|
||||
import { GroupsHelper } from "../helpers/GroupsHelper";
|
||||
|
||||
/**
|
||||
* Search controller
|
||||
@ -25,4 +26,31 @@ export class SearchController {
|
||||
h.send(list);
|
||||
}
|
||||
|
||||
/**
|
||||
* Perform a global search (search both groups & users)
|
||||
*
|
||||
* @param h Request handler
|
||||
*/
|
||||
public static async SearchGlobal(h: RequestHandler) {
|
||||
const query = h.postString("query", 1);
|
||||
const limit = 10;
|
||||
|
||||
const results = [];
|
||||
|
||||
// First, search for groups
|
||||
const groups = await GroupsHelper.SearchGroup(query, limit);
|
||||
groups.map((e) => ({
|
||||
kind: "group",
|
||||
id: e
|
||||
})).forEach((el) => results.push(el));
|
||||
|
||||
// Then search for users
|
||||
const users = await UserHelper.SearchUser(query, limit);
|
||||
users.map((e) => ({
|
||||
kind: "user",
|
||||
id: e
|
||||
})).forEach((el) => results.push(el));
|
||||
|
||||
h.send(results);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user