api-router.ts 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. import { Request, Response, Router } from "express";
  2. import PostController from "../../../controllers/api/posts-controller";
  3. export default class ApiRouter {
  4. private static _instance: Router;
  5. private constructor() {
  6. return this;
  7. }
  8. private static initRoutes() {
  9. this._instance.get("/status", (req: Request, res: Response) => {
  10. res.json("OK").status(200);
  11. });
  12. const postController = new PostController();
  13. this._instance.get("/posts", async (req: Request, res: Response) => {
  14. postController.petition = this.buildPetition(req, res);
  15. const response = await postController.index();
  16. return res.status(response.statusCode).json(response);
  17. });
  18. this._instance.post("/posts", async (req: Request, res: Response) => {
  19. postController.petition = this.buildPetition(req, res);
  20. const response = await postController.store();
  21. return res.status(response.statusCode).json(response);
  22. });
  23. this._instance.get("/posts/:id", async (req: Request, res: Response) => {
  24. postController.petition = this.buildPetition(req, res);
  25. const response = await postController.show();
  26. return res.status(response.statusCode).json(response);
  27. });
  28. this._instance.put("/posts/:id", async (req: Request, res: Response) => {
  29. postController.petition = this.buildPetition(req, res);
  30. const response = await postController.update();
  31. return res.status(response.statusCode).json(response);
  32. });
  33. this._instance.delete("/posts/:id", async (req: Request, res: Response) => {
  34. postController.petition = this.buildPetition(req, res);
  35. const response = await postController.destroy();
  36. return res.status(response.statusCode).json(response);
  37. });
  38. }
  39. private static buildPetition(req: Request, res: Response) {
  40. return {
  41. request: { ...req, payload: req.body },
  42. response: { ...res, status: "OK" }
  43. };
  44. }
  45. public static get instance(): Router {
  46. if (!this._instance) {
  47. this._instance = Router();
  48. this.initRoutes();
  49. }
  50. return this._instance;
  51. }
  52. }