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

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

14
      if (!parsed.success) {
15
        return res.status(400).json({ errors: parsed.error!.issues });
16
      }
17

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

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

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

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

34
      await unlinkTriggerFromMood(triggerId, moodId);
35

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