query groups and courses

This commit is contained in:
Adolfo Reyna
2021-10-14 20:51:17 -07:00
parent 9dc1517fe7
commit 47f35aba3e
2 changed files with 39 additions and 0 deletions

View File

@@ -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;

View File

@@ -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);