api: route to fetch a single sleep entry record
Parents:
09796213 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
}