eletrotupi / tcc/ api/src/controllers/triggers.ts5d2d8805510eedeef6c368247dedf274a649742c
1.8 KB | 69 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
} from '@app/services/trigger.service';
9

10
import {
11
  CreateTriggerSchema
12
} from '@app/schemas'
13

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

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

25
      const trigger = await createTrigger(req.userId!, parsed.data);
26

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

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

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

50
  destroy: async (req: AuthenticatedRequest, res: Response, next: NextFunction) => {
51
    try {
52
      const result = await destroyTriggerById(req.userId!, Number(req.params.id!));
53

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

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

64
      return res.status(200).json(trigger)
65
    } catch (err) {
66
      next(err);
67
    }
68
  }
69
};