Hozifa Elgharbawy
guards
4e3908e
raw
history blame
1.78 kB
import { ExerciseService } from "../services/exercises.service";
import { Request, Response } from "express";
import { JsonResponse } from "@lib/responses/json-response";
import { parsePaginationQuery } from "@helpers/pagination";
import { asyncHandler } from "@helpers/async-handler";
import { paramsValidator } from "@helpers/validation.helper";
import { BaseController } from "@lib/controllers/controller.base";
import { Prefix } from "@lib/decorators/prefix.decorator";
import { serialize } from "@helpers/serialize";
import { ExerciseSerialization } from "@common/serializers/exercise.serializtion";
import { ControllerMiddleware } from "@lib/decorators/controller-middleware.decorator";
import { UsersGuardMiddleware } from "modules/users/common/guards/users.guard";
@Prefix("/users/exercises")
@ControllerMiddleware(UsersGuardMiddleware())
export class ExerciseController extends BaseController {
private exercisesService = new ExerciseService();
setRoutes(): void {
this.router.get("/", asyncHandler(this.list));
this.router.get("/:id", paramsValidator("id"), asyncHandler(this.get));
}
list = async (req: Request, res: Response) => {
const paginationQuery = parsePaginationQuery(req.query);
const { docs, paginationData } = await this.exercisesService.list(
{},
paginationQuery
);
const response = new JsonResponse({
data: serialize(docs, ExerciseSerialization),
meta: paginationData,
});
return res.json(response);
};
get = async (req: Request, res: Response) => {
const data = await this.exercisesService.findOneOrFail({
_id: req.params.id,
});
const response = new JsonResponse({
data: serialize(data.toJSON(), ExerciseSerialization),
});
res.json(response);
};
}