eletrotupi / tcc/ api/src/controllers/triggers.ts5f371a6dcf2b6758abddc975f2dfa25878ae17a9
2.3 KB | 89 lines Raw
1
import { Request, Response, NextFunction } from 'express';
2
import { AuthenticatedRequest } from '@app/middleware/auth';
3
import {
4
  createTrigger,
5
  getTriggersByUserId,
6
  destroyTriggerById,
7
  getTriggerById,
8
  updateTriggerById
9
} from '@app/services/trigger.service';
10

11
import {
12
  CreateTriggerSchema,
13
  UpdateTriggerSchema
14
} from '@app/schemas'
15

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

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

27
      const trigger = await createTrigger(req.userId!, parsed.data);
28

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

35
  index: async (req: AuthenticatedRequest, res: Response, next: NextFunction) => {
36
    try {
37
      const result = await getTriggersByUserId(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
  destroy: async (req: AuthenticatedRequest, res: Response, next: NextFunction) => {
53
    try {
54
      const result = await destroyTriggerById(req.userId!, Number(req.params.id!));
55

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

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

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

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

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

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

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