diff --git a/routes/profile.js b/routes/profile.js index f61b149..88c95bc 100644 --- a/routes/profile.js +++ b/routes/profile.js @@ -21,29 +21,93 @@ DB.getDB.then((DB) => { * description: User profile management */ -/** - * @swagger - * /user/mine: - * get: - * summary: Get all profiles for the logged-in user - * tags: [Profiles] - * security: - * - cookieAuth: [] - * responses: - * 200: - * description: OK - * content: - * application/json: - * schema: - * type: object - * properties: - * status: - * type: string - * profiles: - * type: array - * items: - * type: object - */ + /** + * @swagger + * components: + * schemas: + * Profile: + * type: object + * properties: + * userid: + * type: string + * description: The ID of the user associated with the profile. + * profile: + * type: object + * properties: + * firstName: + * type: string + * lastName: + * type: string + * photo: + * type: string + * location: + * type: string + * language: + * type: string + * status: + * type: string + * description: + * type: string + * data: + * type: object + * description: Additional custom data for the profile. + * username: + * type: string + * following: + * type: array + * items: + * type: string + * description: List of profile IDs this profile is following. + * lastUpdate: + * type: string + * format: date-time + * newsFeedCache: + * type: array + * items: + * type: object + * notifications: + * type: array + * items: + * type: object + * isGroup: + * type: boolean + * isCourse: + * type: boolean + * isPrivate: + * type: boolean + * isChat: + * type: boolean + * subscribed: + * type: object + * description: Users subscribed to this group (if isGroup is true). + * pending: + * type: object + * description: Pending subscription requests for private groups. + */ + + /** + * @swagger + * /user/mine: + * get: + * summary: Get all profiles for the logged-in user + * tags: [Profiles] + * security: + * - cookieAuth: [] + * responses: + * 200: + * description: OK + * content: + * application/json: + * schema: + * type: object + * properties: + * status: + * type: string + * profiles: + * type: array + * items: + * $ref: '#/components/schemas/Profile' + */ router.get("/mine", async (req, res) => { let userid = getUserId(req); let profiles = await DB.getUserProfiles(userid); @@ -67,9 +131,14 @@ DB.getDB.then((DB) => { * required: true * schema: * type: object + * $ref: '#/components/schemas/Profile' * responses: * 200: * description: OK + * content: + * application/json: + * schema: + * $ref: '#/components/schemas/Profile' */ router.get("/new", async (req, res) => { //Deprecated please use route post("/") let profile = { @@ -97,13 +166,14 @@ DB.getDB.then((DB) => { * content: * application/json: * schema: - * type: object - * properties: - * content: - * type: object + * $ref: '#/components/schemas/Profile' * responses: * 200: * description: OK + * content: + * application/json: + * schema: + * $ref: '#/components/schemas/Profile' */ router.post("/", async (req, res) => { let profile = { @@ -126,32 +196,32 @@ DB.getDB.then((DB) => { }); - /** - * @swagger - * /user/invite: - * post: - * summary: Invite a new user by email - * tags: [Profiles] - * security: - * - cookieAuth: [] - * requestBody: - * required: true - * content: - * application/json: - * schema: - * type: object - * properties: - * name: - * type: string - * email: - * type: string - * format: email - * responses: - * 200: - * description: OK - * 400: - * description: Bad request - */ + /** + * @swagger + * /user/invite: + * post: + * summary: Invite a new user by email + * tags: [Profiles] + * security: + * - cookieAuth: [] + * requestBody: + * required: true + * content: + * application/json: + * schema: + * type: object + * properties: + * name: + * type: string + * email: + * type: string + * format: email + * responses: + * 200: + * description: OK + * 400: + * description: Bad request + */ router.post("/invite", async (req, res) => { try { const userid = getUserId(req); @@ -207,7 +277,17 @@ DB.getDB.then((DB) => { * responses: * 200: * description: OK - */ + * content: + * application/json: + * schema: + * type: object + * properties: + * status: + * type: string + * invitation: + * $ref: '#/components/schemas/Profile' + * +*/ router.get("/invite/:email", async (req, res) => { const userid = getUserId(req); const email = req.params.email; @@ -231,6 +311,17 @@ DB.getDB.then((DB) => { * responses: * 200: * description: OK + * content: + * application/json: + * schema: + * type: object + * properties: + * status: + * type: string + * groups: + * type: array + * items: + * $ref: '#/components/schemas/Profile' */ router.get("/groups", async (req, res) => { let groups = await DB.getGroups(); @@ -251,6 +342,17 @@ DB.getDB.then((DB) => { * responses: * 200: * description: OK + * content: + * application/json: + * schema: + * type: object + * properties: + * status: + * type: string + * groups: + * type: array + * items: + * $ref: '#/components/schemas/Profile' */ router.get("/groups/following", async (req, res) => { const profileId = getProfileId(req); @@ -274,10 +376,14 @@ DB.getDB.then((DB) => { * content: * application/json: * schema: - * type: object + * $ref: '#/components/schemas/Profile' * responses: * 200: * description: OK + * content: + * application/json: + * schema: + * $ref: '#/components/schemas/Profile' */ router.post("/groups", async (req, res) => { let profile = { @@ -304,6 +410,17 @@ DB.getDB.then((DB) => { * responses: * 200: * description: OK + * content: + * application/json: + * schema: + * type: object + * properties: + * status: + * type: string + * groups: + * type: array + * items: + * $ref: '#/components/schemas/Profile' */ router.get("/courses", async (req, res) => { let groups = await DB.getCourses(); @@ -418,6 +535,17 @@ DB.getDB.then((DB) => { * responses: * 200: * description: OK + * content: + * application/json: + * schema: + * type: object + * properties: + * status: + * type: string + * groups: + * type: array + * items: + * $ref: '#/components/schemas/Profile' */ router.get("/groups/search", async (req, res) => { let query = req.query.query; @@ -446,6 +574,15 @@ DB.getDB.then((DB) => { * responses: * 200: * description: OK + * content: + * application/json: + * schema: + * type: object + * properties: + * status: + * type: string + * groups: + * $ref: '#/components/schemas/Profile' */ router.get("/groups/:id", async (req, res) => { const groupid = req.params.id; @@ -531,6 +668,17 @@ DB.getDB.then((DB) => { * responses: * 200: * description: OK + * content: + * application/json: + * schema: + * type: object + * properties: + * status: + * type: string + * profiles: + * type: array + * items: + * $ref: '#/components/schemas/Profile' */ router.get("/search", async (req, res) => { let query = req.query.query; @@ -563,6 +711,13 @@ DB.getDB.then((DB) => { * responses: * 200: * description: OK + * content: + * application/json: + * schema: + * type: object + * properties: + * status: + * type: string */ router.post("/setData", (req, res) => { const key = req.body.key; @@ -590,12 +745,19 @@ DB.getDB.then((DB) => { * type: object * properties: * profile: - * type: object + * $ref: '#/components/schemas/Profile' * data: * type: object * responses: * 200: * description: OK + * content: + * application/json: + * schema: + * type: object + * properties: + * status: + * type: string */ router.post("/myProfile", async (req, res) => { let profile = { @@ -627,6 +789,10 @@ DB.getDB.then((DB) => { * responses: * 200: * description: OK + * content: + * application/json: + * schema: + * $ref: '#/components/schemas/Profile' */ router.get("/:id", async (req, res) => { let profileId = req.params.id; @@ -654,6 +820,13 @@ DB.getDB.then((DB) => { * responses: * 200: * description: OK + * content: + * application/json: + * schema: + * type: object + * properties: + * status: + * type: string */ router.delete("/:id", async (req, res) => { const profileId = req.params.id; @@ -685,6 +858,13 @@ DB.getDB.then((DB) => { * responses: * 200: * description: OK + * content: + * application/json: + * schema: + * type: object + * properties: + * status: + * type: string */ router.get("/:id/follow", async (req, res) => { let followProfileId = req.params.id; @@ -713,6 +893,13 @@ DB.getDB.then((DB) => { * responses: * 200: * description: OK + * content: + * application/json: + * schema: + * type: object + * properties: + * status: + * type: string */ router.get("/:id/unfollow", async (req, res) => { let followProfileId = req.params.id;