eletrotupi / tcc/ api/src/controllers/moods.ts1ae4e1096335a981b91bb09c19f830b4eb417903
1.6 KB | 64 lines Raw
1
import { Request, Response, NextFunction } from 'express';
2
import { AuthenticatedRequest } from '@app/middleware/auth';
3
import {
4
  createMood,
5
  getMoodsByUserId,
6
  getMoodById
7
} from '@app/services/mood.service';
8

9
import {
10
  CreateMoodSchema
11
} from '@app/schemas'
12

13
export const MoodsController = {
14
  create: async (req: AuthenticatedRequest, res: Response, next: NextFunction) => {
15
    try {
16
      const parsed = CreateMoodSchema.safeParse(req.body.mood);
17

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

24
      const mood = await createMood(req.userId!, parsed.data);
25

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

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

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

49
  show: async (req: AuthenticatedRequest, res: Response, next: NextFunction) => {
50
    try {
51
      const mood = await getMoodById(Number(req.params.id))
52

53
      if (!mood) {
54
        return res.status(404).json({ errors: "not found" })
55
      }
56

57
      return res.status(200).json(
58
        mood
59
      )
60
    } catch (err) {
61
      next(err);
62
    }
63
  }
64
};