eletrotupi / tcc/ commit / 2e52778

api: route to fetch a single sleep entry record

Pedro Lucas Porcellis porcellis@eletrotupi.com 1 month ago 2e52778e4d0781399ac5a94fdcf90eda1ab41975
Parents: 0979621
3 file(s) changed
  • api/src/controllers/sleepRecords.ts +12 -1
  • api/src/routes/sleepRecords.ts +1 -0
  • api/src/services/sleepRecord.service.ts +6 -0
api/src/controllers/sleepRecords.ts
1 1
import { Request, Response, NextFunction } from 'express';
2 2
import { AuthenticatedRequest } from '@app/middleware/auth';
3 3
import {
4 4
  createSleepRecord,
5 5
  getSleepRecordsByUserId,
6 -
  destroySleepRecordById
6 +
  destroySleepRecordById,
7 +
  getSleepRecordById
7 8
} from '@app/services/sleepRecord.service';
8 9

9 10
import {
10 11
  CreateSleepRecordSchema
11 12
} from '@app/schemas'
▸ 27 unchanged lines
39 40
      });
40 41

41 42
      return res.status(200).json(
42 43
        result
43 44
      )
45 +
    } catch (err) {
46 +
      next(err);
47 +
    }
48 +
  },
49 +

50 +
  show: async (req: AuthenticatedRequest, res: Response, next: NextFunction) => {
51 +
    try {
52 +
      const sleepRecord = await getSleepRecordById(Number(req.userId!), Number(req.params.id!));
53 +

54 +
      return res.status(200).json(sleepRecord)
44 55
    } catch (err) {
45 56
      next(err);
46 57
    }
47 58
  },
48 59

▸ 5 unchanged lines
54 65
    } catch (err) {
55 66
      next(err);
56 67
    }
57 68
  }
58 69
};
api/src/routes/sleepRecords.ts
1 1
import { Router } from "express";
2 2
import { SleepRecordsController } from '@app/controllers/sleepRecords'
3 3
import { requireAuth } from '@app/middleware/auth';
4 4

5 5
const router = Router();
6 6

7 7
router.get('/', requireAuth, SleepRecordsController.index);
8 8
router.post('/', requireAuth, SleepRecordsController.create);
9 +
router.get('/:id', requireAuth, SleepRecordsController.show);
9 10
router.delete('/:id', requireAuth, SleepRecordsController.destroy);
10 11

11 12
export default router;
api/src/services/sleepRecord.service.ts
1 1
import { prisma } from '@app/lib/prisma';
2 2
import { SleepRecord } from '@prisma/client';
3 3

4 4
import { CreateSleepRecordInput } from '@app/schemas';
5 5
import { rollingPeriod } from "@app/lib/queue/processors/insights/utils";
▸ 68 unchanged lines
74 74
      userId
75 75
    }
76 76
  })
77 77
}
78 78

79 +
export const getSleepRecordById = async (userId: number, id: number): Promise<SleepRecord | null> => {
80 +
  return await prisma.sleepRecord.findUnique({
81 +
    where: { userId, id }
82 +
  })
83 +
}
84 +

79 85
async function enqueueEnergySleepInsights(userId: number): Promise<void> {
80 86
  const queue = getQueue("insights");
81 87
  const period = rollingPeriod(7);
82 88
  const payload = { userId, ...period };
83 89

▸ 18 unchanged lines
102 108
        removeOnComplete: true,
103 109
      },
104 110
    },
105 111
  ]);
106 112
}