Dependências necessárias para rodar o servidor e suas versões recomendadas.
node v12.22.12
ou superior.npm 6.14.16
ou superior.docker 20.10.16
ou superior.docker-compose 1.25.0
ou superior.psql 14.3
ou superior.insomnia
Para poder executar este programa, primeiro deve clonar este repositório, para isso execute
git clone https://github.com/Gabriel-Grechuk/crud-javascript.git
cd crud-javascript
Logo depois, é necessário rodar o script de configuração, que é o responsável por instalar todas as dependências do node
via npm
, subir um container do docker
com uma imagem do postgresql
instalada, realizar a primeira migration do prisma
e baixar, extrair e inserir o arquivo contendo 10mi de registro de usuários em formato CSV com o psql
. Para isso basta rodar o script
chmod 775 ./configure.sh
./configure.sh
Este script, dentro de alguns instantes, solicitará que você entre a senha configurada para a comunicação do psql
com o postgresql
. Basta digitar a senha 123123
e pressionar enter e ele imediatamente estará carregando os registros para dentro do banco de dados. Posteriormente, informará que o banco de dados já está configurado e já é possível proceguir com a execução.
Este script leva em torno de 10 a 20 minutos para concluir a sua execução, dependendo da configuração da máquina sendo utilizada.
Com a execução do ./configure.sh
concluída, já é possível executar o servidor do CRUD, para isto, basta executar
chmod 775 ./run.sh
./run.sh
Durante a execução, ele estará usando um servidor postgresql
no docker-compose
em segundo plano, e mostrará o prompt do node
, informando em qual porta a aplicação está sendo executada. Para finalizar a execução, basta pressionar Ctrl + c
no terminal que o servidor node
será encerrado. Para parar a execução da instância do docker-compose
, basta rodar
chmod 775 ./stop-composer.sh
./stop-composer.sh
Quando não for mais necessário executar a aplicação, os containers e suas configurações podem ser facilmente removidas. Para isso, basta executar o script
chmod 775 ./remove-docker.sh
./remove-docker.sh
e pronto, os containers docker
foram removidos. Caso deseje usar a aplicação com sua base de dados novamente, é necessário executar o ./configure.sh
novamente.
Para este fim, recomendo usar o insomnia
, assim pode importar o arquivo requests-Insomnia.json
para dentro dele e já ter configurados exemplos de requests para facilitar o teste das operações.
A listagem dos cadastros é paginada de 20 em 20 registros, e pode ser feita através de uma simples requisição GET
para a rota
http://localhost:8080/users
Para avançar as páginas de registros, deve usar a query
http://localhost:8080/users?page=<index>
Onde <index>
é o número da página que deseja acessar. Ex:
http://localhost:8080/users?page=55
Para consultar um usuário pelo seu id
, precisa executar uma requisição GET
para rota
http://localhost:8080/users/<id>
Onde <id>
é o uuid do usuário. Ex:
http://localhost:8080/users/00047e76-1a43-45e6-8113-e5b9d9d259a6
Para cadastrar um novo usuário, é necessário fazer uma requisição POST
para a seguinte rota
http://localhost:8080/users
e o corpo da requisição precisa ter os campos name
, email
e phone
. Ex:
{
"name": "Roberto Carlos Jr.",
"phone": "+55 (12) 99623-1234",
"email": "[email protected]"
}
Para modificar um usuário, é necessário fazer uma requisição PUT
para a rota
http://localhost:8080/users/<id>
onde o campo <id>
indica o id
do usuário que deseja editar. E o corpo da requisição dever conter os novos campos name
, email
e phone
. Ex:
Requisição PUT
:
http://localhost:8080/users/00047e76-1a43-45e6-8113-e5b9d9d259a6
corpo da requisição:
{
"name": "Srta. Hélio Batista",
"email": "[email protected]",
"phone": "+55 (44) 9 8448-1500"
}
Para deletar um usuário, basta realizar uma requisição DELETE
para a rota
http://localhost:8080/users/<id>
onde o campo <id>
se refere ao id
do usuário que deseja excluir. Ex:
http://localhost:8080/users/000002a9-1fe6-4f8a-a0c7-17cbe5666b4f
Esse problema tem duas causas possíveis: O serviço do docker não está rodado, ou seu usuário não tem as permissões necessárias para executar o docker
.
Para configurar o serviço do docker em um linux com Systemd
sudo systemctl enable docker
sudo systemctl start docker
Caso o problema ainda ocorra, trata-se de permissões do usuário. Adicione o seu usuário ao grupo docker e execute o ./configure
e os outros scripts *.sh
desta pasta como sudo
.
sudo usermod -aG docker $USER
sudo ./configure.sh
Esse erro geralmente é causado por uma instância do postgresql
rodando fora do container docker
ou alguma outra aplicação.
Rode o comando
lsof -i :5432
para se assegurar de que não há nenhum arquivo sendo usado pelo processo. Casso não retorne nada
, pode executar livremente o comando
sudo ss -lptn 'sport = :5432'
ele vai retornar as informações do processo sendo executado na porta :5432. No campo Process
, estará informado o pid
do processo ( Ex: users:(("postgres",pid=26058,fd=5))
) e pode utiliza-lo para matar a execução.
sudo kill <pid>
E já pode executar o comando ./configure.sh
novamente, ou sudo ./configure.sh
se necessário.