Kaynağa Gözat

Create route for retrieving all sessions for a user.

Lee Morgan 1 yıl önce
ebeveyn
işleme
f9aa314292
2 değiştirilmiş dosya ile 19 ekleme ve 2 silme
  1. 16 1
      controllers/session.js
  2. 3 1
      routes/session.js

+ 16 - 1
controllers/session.js

@@ -28,6 +28,20 @@ const getRoute = async (req, res, next)=>{
     }catch(e){next(e)}
 }
 
+const getAllRoute = async (req, res, next)=>{
+    try{
+        const [workout, sessions] = await Promise.all([
+            Workout.findOne({_id: req.params.workoutId}),
+            Session.aggregate([
+                {$match: {workout: new ObjectId(req.params.workoutId)}},
+                {$sort: {start: -1}}
+            ])
+        ]);
+        confirmWorkoutOwnership(workout, res.locals.user);
+        res.json(sessions.map(s => responseSession(s)));
+    }catch(e){next(e)}
+}
+
 /*
  Create a new Session object
  @param {Object} - Body data from the object
@@ -69,5 +83,6 @@ const responseSession = (session)=>{
 
 export {
     createRoute,
-    getRoute
+    getRoute,
+    getAllRoute
 }

+ 3 - 1
routes/session.js

@@ -1,6 +1,7 @@
 import {
     createRoute,
-    getRoute
+    getRoute,
+    getAllRoute
 } from "../controllers/session.js";
 
 import {userAuth} from "../auth.js";
@@ -8,4 +9,5 @@ import {userAuth} from "../auth.js";
 export default (app)=>{
     app.post("/session", userAuth, createRoute);
     app.get("/session/:workoutId", userAuth, getRoute);
+    app.get("/session/:workoutId/all", userAuth, getAllRoute);
 }