query groups and courses
This commit is contained in:
@@ -163,6 +163,35 @@ userDB = (DB) => {
|
||||
return r;
|
||||
}
|
||||
|
||||
DB.searchGroups = async (queryStr, coursesB = false) => {
|
||||
let regEx = new RegExp(queryStr, 'i');
|
||||
let query = queryStr ? {
|
||||
isGroup: true,
|
||||
isCourse: coursesB,
|
||||
$or: [
|
||||
{"profile.firstName": {
|
||||
$regex: regEx
|
||||
}},
|
||||
{"profile.lastName": {
|
||||
$regex: regEx
|
||||
}},
|
||||
{"profile.description": {
|
||||
$regex: regEx
|
||||
}},
|
||||
{"data.author": {
|
||||
$regex: regEx
|
||||
}}
|
||||
]
|
||||
} : {isGroup: true, isCourse: coursesB};
|
||||
let r = await DB.profileCols.find(query)
|
||||
.sort({ lastUpdate: -1 }).limit(20)
|
||||
.toArray().catch((err) => {
|
||||
console.log(err);
|
||||
return false;
|
||||
});
|
||||
return r;
|
||||
}
|
||||
|
||||
let privateGroupsCache = {};
|
||||
DB.isGroupPrivate = async (groupid) => {
|
||||
if(userProfileCache[groupid]) return userProfileCache[groupid].isPrivate;
|
||||
|
||||
@@ -124,6 +124,16 @@ DB.getDB.then((DB)=>{
|
||||
});
|
||||
});
|
||||
|
||||
router.get("/groups/search", async (req, res) => {
|
||||
let query = req.query.query;
|
||||
let coursesB = req.query.courses ? true : false;
|
||||
let groups = await DB.searchGroups(query, coursesB);
|
||||
return res.json({
|
||||
status: "ok",
|
||||
groups
|
||||
});
|
||||
});
|
||||
|
||||
router.get("/groups/:id", async (req, res) => {
|
||||
const groupid = req.params.id;
|
||||
let groups = await DB.getGroup(groupid);
|
||||
|
||||
Reference in New Issue
Block a user