12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- import { Request, Response, Router } from "express";
- import PostController from "../../../controllers/api/posts-controller";
- export default class ApiRouter {
- private static _instance: Router;
- private constructor() {
- return this;
- }
- private static initRoutes() {
- this._instance.get("/status", (req: Request, res: Response) => {
- res.json("OK").status(200);
- });
- const postController = new PostController();
- this._instance.get("/posts", async (req: Request, res: Response) => {
- postController.petition = this.buildPetition(req, res);
- const response = await postController.index();
- return res.status(response.statusCode).json(response);
- });
- this._instance.post("/posts", async (req: Request, res: Response) => {
- postController.petition = this.buildPetition(req, res);
- const response = await postController.store();
- return res.status(response.statusCode).json(response);
- });
- this._instance.get("/posts/:id", async (req: Request, res: Response) => {
- postController.petition = this.buildPetition(req, res);
- const response = await postController.show();
- return res.status(response.statusCode).json(response);
- });
- this._instance.put("/posts/:id", async (req: Request, res: Response) => {
- postController.petition = this.buildPetition(req, res);
- const response = await postController.update();
- return res.status(response.statusCode).json(response);
- });
- this._instance.delete("/posts/:id", async (req: Request, res: Response) => {
- postController.petition = this.buildPetition(req, res);
- const response = await postController.destroy();
- return res.status(response.statusCode).json(response);
- });
- }
- private static buildPetition(req: Request, res: Response) {
- return {
- request: { ...req, payload: req.body },
- response: { ...res, status: "OK" }
- };
- }
- public static get instance(): Router {
- if (!this._instance) {
- this._instance = Router();
- this.initRoutes();
- }
- return this._instance;
- }
- }
|