MOON
Server: Apache
System: Linux vps.erhabenn.com.br 3.10.0-1160.119.1.el7.tuxcare.els2.x86_64 #1 SMP Mon Jul 15 12:09:18 UTC 2024 x86_64
User: sonne (1011)
PHP: 8.2.31
Disabled: NONE
Upload Files
File: //matrixSwot/backend/modules/index.js
const express = require("express");
const router = express.Router();

//DEPENDENCIAS
const { validSchema } = require("./schemaValidate"); // Função para validação de dados do schema da API

router.put("/*", async (req, res) => {
  await execPostPutPatch(req, res, "put");
});
router.patch("/*", async (req, res) => {
  await execPostPutPatch(req, res, "patch");
});
router.post("/*", async (req, res) => {
  await execPostPutPatch(req, res, "post");
});
router.get("/*", async (req, res) => {
  await execPostPutPatch(req, res, "get");
});
router.delete("/*", async (req, res) => {
  await execPostPutPatch(req, res, "delete");
});

async function execPostPutPatch(req, res, method) {
  /* Executa a função chamada pelo client Ex: GET-> User/data/ *******/
  let reqURL = req.originalUrl.split("/");
  /* Validação do schema do Banco e dados recebidos na API *******/
  try {
    const {
      schema
    } = await require(`./${reqURL[1]}/${method}/${reqURL[2]}.schema.js`);
    const data =
      method === "get"
        ? req.query
        : method === "delete"
        ? { id: reqURL[3] }
        : req.body;

    const schemaValidate = await validSchema(
      method,
      schema,
      data,
      req.tokenDecoded
    );

    if (schemaValidate !== true && schemaValidate && schemaValidate.code) {
      res.status(schemaValidate.code);
      res.send(schemaValidate.data);
      return;
    }
    req.schema = schema;

    if (method === "delete") {
      req.body.id = reqURL[3];
    }
  } catch (err) {
    console.log(`SCHEMA ./${reqURL[1]}/${method}/${reqURL[2]} :::ERROR:${err}`);
  }
  /* ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ */
  try {
    let reqMod = await require(`./${reqURL[1]}/${method}/${reqURL[2]}.js`);
    let response = await reqMod.request(req);
    return res.status(response.code).send(response.data);
  } catch (err) {
    console.log(`WS ./${reqURL[1]}/${method}/${reqURL[2]} :::ERROR:${err}`);
  }
  res.status(404);
  res.send({
    message: `Não foi possível encontrar a requisição ${method.toUpperCase()}->${
      reqURL[1]
    }/${reqURL[2]}/${reqURL[3] ? reqURL[3] : ``}`
  });
}

module.exports = router;