Files
EMI-Backend/routes/profile.js
T
2021-09-02 10:53:50 -07:00

101 lines
2.6 KiB
JavaScript

var express = require('express')
var router = express.Router()
const DB = require("../mongoDB.js");
const Profile = require("../def/profile.js");
DB.getDB.then((DB)=>{
const getUserId = function(req){
const user_sid = req.cookies.user_sid || req.query.user_sid || req.body.user_sid;
return DB.ObjectID(user_sid);
}
const getProfileId = (req)=>{
return DB.ObjectID(req.cookies.profile_id || req.query.profile_id || req.body.profile_id);
}
router.get("/mine", async (req, res) => {
let userid = req.cookies.user_sid;
let profiles = await DB.getUserProfiles(userid);
return res.json({
status: "ok",
profiles
});
});
router.get("/new", async (req, res) => {
let profile = {
userid: getUserId(req),
... req.query.content
};
let profileObj = new Profile(profile);
let r = await DB.newProfile(profileObj);
return res.json({
status: "ok",
... profileObj.toObj()
});
});
router.get("/groups", async (req, res) => {
let groups = await DB.getGroups();
return res.json({
status: "ok",
groups
});
});
router.post("/groups", async (req, res) => {
let profile = {
userid: getUserId(req),
isGroup: true,
... req.body
};
console.log("newGroup", profile)
let profileObj = new Profile(profile);
DB.newProfile(profileObj)
return res.json({
status: "ok",
... profileObj.toObj()
});
});
router.get("/groups/:id", async (req, res) => {
const groupid = req.params.id;
let groups = await DB.getGroup(groupid);
return res.json({
status: "ok",
groups
});
});
router.get("/groups/:id/subscribe", async (req, res) => {
const groupid = req.params.id;
const profileid = getProfileId(req);
DB.subscribeToGroup(profileid, groupid);
return res.json({
status: "ok"
});
});
router.get("/groups/:id/unsubscribe", async (req, res) => {
const groupid = req.params.id;
const profileid = getProfileId(req);
DB.unsubscribeToGroup(profileid, groupid).then(console.log);
return res.json({
status: "ok"
});
});
router.get("/:id", async (req, res) => {
let profileId = req.params.id;
let profile = await DB.getProfile(profileId);
return res.json({
status: "ok",
... profile
});
});
});
module.exports = router