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

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

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

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

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

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

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

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