eletrotupi / tcc/ api/src/controllers/sleepRecords.tsf9e8c48e8060613464a074cf3f6336a360a9c3c6
1.9 KB | 69 lines Raw
1
import { Request, Response, NextFunction } from 'express';
2
import { AuthenticatedRequest } from '@app/middleware/auth';
3
import {
4
  createSleepRecord,
5
  getSleepRecordsByUserId,
6
  destroySleepRecordById,
7
  getSleepRecordById
8
} from '@app/services/sleepRecord.service';
9

10
import {
11
  CreateSleepRecordSchema
12
} from '@app/schemas'
13

14
export const SleepRecordsController = {
15
  create: async (req: AuthenticatedRequest, res: Response, next: NextFunction) => {
16
    try {
17
      const parsed = CreateSleepRecordSchema.safeParse(req.body.sleepRecord);
18

19
      if (!parsed.success) {
20
        return res.status(400).json({
21
          errors: parsed.error!.issues
22
        });
23
      }
24

25
      const sleepRecord = await createSleepRecord(req.userId!, parsed.data);
26

27
      return res.status(201).json({ sleepRecord });
28
    } catch (err) {
29
      next(err);
30
    }
31
  },
32

33
  index: async (req: AuthenticatedRequest, res: Response, next: NextFunction) => {
34
    try {
35
      const result = await getSleepRecordsByUserId(Number(req.userId), {
36
        limit: req.query.limit ? Number(req.query.limit) : undefined,
37
        page:  req.query.page  ? Number(req.query.page)  : undefined,
38
        from:  req.query.from  as string | undefined,
39
        to:    req.query.to    as string | undefined,
40
      });
41

42
      return res.status(200).json(
43
        result
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)
55
    } catch (err) {
56
      next(err);
57
    }
58
  },
59

60
  destroy: async (req: AuthenticatedRequest, res: Response, next: NextFunction) => {
61
    try {
62
      const result = await destroySleepRecordById(req.userId!, Number(req.params.id!));
63

64
      return res.status(200).json({})
65
    } catch (err) {
66
      next(err);
67
    }
68
  }
69
};