eletrotupi / tcc/ api/src/controllers/triggerMoodLinks.tsc901c35af9c84b6a29e5185545ced1129f33b8f4
1.2 KB | 42 lines Raw
1
import { Response, NextFunction } from 'express';
2
import { AuthenticatedRequest } from '@app/middleware/auth';
3
import { LinkMoodSchema } from '@app/schemas';
4
import { formatValidationError } from '@app/lib/errors/validationError';
5
import {
6
  linkTriggerToMood,
7
  unlinkTriggerFromMood,
8
} from '@app/services/triggerMoodLink.service';
9

10
export const TriggerMoodLinksController = {
11
  linkMood: async (req: AuthenticatedRequest, res: Response, next: NextFunction) => {
12
    try {
13
      const parsed = LinkMoodSchema.safeParse(req.body);
14

15
      if (!parsed.success) {
16
        return res.status(400).json(formatValidationError(parsed.error!));
17
      }
18

19
      const triggerId = Number(req.params.triggerId);
20
      const { moodId, perceivedImpact } = parsed.data;
21

22
      const link = await linkTriggerToMood(triggerId, moodId, perceivedImpact);
23

24
      return res.status(201).json({ link });
25
    } catch (err) {
26
      next(err);
27
    }
28
  },
29

30
  unlinkMood: async (req: AuthenticatedRequest, res: Response, next: NextFunction) => {
31
    try {
32
      const triggerId = Number(req.params.triggerId);
33
      const moodId = Number(req.params.moodId);
34

35
      await unlinkTriggerFromMood(triggerId, moodId);
36

37
      return res.status(200).json({});
38
    } catch (err) {
39
      next(err);
40
    }
41
  },
42
};