Git Product home page Git Product logo

crud-javascript's Introduction

CRUD-JAVASCRIPT

Como usar

Dependências

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

Como executar a aplicação

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

Configurando

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.

Rodando aplicação.

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

Removendo container postgresql do docker

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.

Fazendo requisições e CRUD

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.

Listar cadastros

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

Consultando usuário pelo id

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

Cadastrando um novo usuário

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]" 
}

Modificando um usuário

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"
}

Deletando usuário

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

Problemas ao executar ./configure.sh

"ERROR: Couldn't connect to Docker daemon at http+docker://localhost - is it running?"

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

"Error starting userland proxy: listen tcp4 0.0.0.0:5432: bind: address already in use"

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.

crud-javascript's People

Contributors

gabriel-grechuk avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar

crud-javascript's Issues

Objetivos

O projeto se consiste em criar um crud em Node, usando PostgreSQL.

Deve ser criado um banco de dados SQL, carregado um arquivo SVG contendo 10 milhões de usuários para uma tabela com os campos id, nome, email e phone, e criar um servidor que administre a listagem, a criação, a atualização e a exclusão destes registros.

TODO

  • PostgresSQL

    • Subir uma instancia do postgresql e criar o servidor cadastro com uma tabela usuarios;
    • Carregar o arquivo CSV na tabela usuarios;
  • Crud

    • Criar servidor node com express na porta 8080;
    • Configurar routes;
    • API
      • listar (GET localhost:8080/users);
        • Criar protótipo;
        • Dados paginados;
      • cadastrar (POST localhost:8080/users) ;
        • Criar protótipo;
        • Validação dos dados;
        • Registro no postrgres;
      • atualizar (PUT localhost:8080/users/);
        • Criar protótipo;
        • Validar id;
        • Atualizar no postres;
      • deletar (DELETE localhost:8080/users/);
        • Criar protótipo;
        • Validar id;
        • Deletar do postgres;

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.