eletrotupi / tcc/ api/src/controllers/sleepRecords.ts23893a7b41f6b4b4ee7958a5d186afebd3f12827
2.4 KB | 89 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
  updateSleepRecordById
9
} from '@app/services/sleepRecord.service';
10

11
import {
12
  CreateSleepRecordSchema,
13
  UpdateSleepRecordSchema
14
} from '@app/schemas'
15

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

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

27
      const sleepRecord = await createSleepRecord(req.userId!, parsed.data);
28

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

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

44
      return res.status(200).json(
45
        result
46
      )
47
    } catch (err) {
48
      next(err);
49
    }
50
  },
51

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

56
      return res.status(200).json(sleepRecord)
57
    } catch (err) {
58
      next(err);
59
    }
60
  },
61

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

66
      return res.status(200).json({})
67
    } catch (err) {
68
      next(err);
69
    }
70
  },
71

72
  update: async (req: AuthenticatedRequest, res: Response, next: NextFunction) => {
73
    try {
74
      const parsed = UpdateSleepRecordSchema.safeParse(req.body.sleepRecord);
75

76
      if (!parsed.success) {
77
        return res.status(400).json({
78
          errors: parsed.error!.issues
79
        });
80
      }
81

82
      const sleepRecord = await updateSleepRecordById(req.userId!, Number(req.params.id!), parsed.data);
83

84
      return res.status(200).json({ sleepRecord });
85
    } catch (err) {
86
      next(err);
87
    }
88
  }
89
};