2
respostas

[Sugestão] Minhas validações em controladores:

Olá pessoal, compartilhando aqui as minhas validações para os controladores:

//const fs = require("fs");
const {
  getTodosLivros,
  getLivroPorId,
  insereLivro,
  modificaLivro,
  deletaLivro,
} = require("../servicos/livro");

function getLivros(req, res) {
  try {
    const livros = getTodosLivros();
    if (Object.keys(livros).length !== 0) {
      res.send(livros);
    } else {
      res.status(422);
      res.send("Nada foi encontrado");
    }
  } catch (error) {
    res.status(500);
    res.send(error.message);
  }
}

function getLivro(req, res) {
  try {
    const id = req.params.id;
    if (id && Number(id)) {
      const livro = getLivroPorId(id);
      if (livro) {
        res.send(livro);
      } else {
        res.status(422);
        res.send("Id não encontrado");
      }
    } else {
      res.status(422);
      res.send("Id inválido");
    }
  } catch (error) {
    res.status(500);
    res.send(error.message);
  }
}

function postLivro(req, res) {
  try {
    const livroNovo = req.body;
    if (livroNovo.id && Number(livroNovo.id) && req.body.nome) {
      const idTest = livroNovo.id;
      if (!getLivroPorId(idTest)) {
        insereLivro(livroNovo);
        res.status(201);
        res.send("Livro inserido com sucesso");
      } else {
        res.status(500);
        res.send("Id já está em uso");
      }
    } else {
      res.status(500);
      res.send("Id/nome inválido");
    }
  } catch (error) {
    res.status(500);
    res.send(error.message);
  }
}

function patchLivro(req, res) {
  try {
    const id = req.params.id;
    const body = req.body;
    if (id && Number(id)) {
      if (getLivroPorId(id)) {
        modificaLivro(body, id);
        res.send("Informações modificadas com sucesso");
      } else {
        res.send("Id não encontrado");
      }
    } else {
      res.send("Id inválido");
    }
  } catch (error) {
    res.status(500);
    res.send(error.message);
  }
}

function deleteLivro(req, res) {
  try {
    const id = req.params.id;
    if (id && Number(id)) {
      if (getLivroPorId(id)) {
        deletaLivro(id);
        res.send("Livro apagado com sucesso");
      } else {
        res.status(422);
        res.send("Id não encontrado");
      }
    } else {
      res.status(422);
      res.send("Id inválido ou não encontrado");
    }
  } catch (error) {
    res.status(500);
    res.send(error.message);
  }
}

module.exports = {
  getLivros,
  getLivro,
  postLivro,
  patchLivro,
  deleteLivro,
};
2 respostas

Olá, Charles.

Tudo bem?

Gostei muito das validações que você implementou nos controladores! É essencial tratar as possíveis falhas para garantir que sua API funcione corretamente. Seu código cobre bem os casos de erro, como IDs inválidos e livros não encontrados, o que ajuda a evitar problemas em produção.

Continue com essa dedicação. Parabéns!

O fórum está à disposição para qualquer dúvida ou comentário adicional. Abraço!

Olá Renan, Grato pelo tempo em analisar o código e pelo incentivo!