Este projeto é referente ao Main Server do projeto Inspeção de Cabo de Aço da disciplina de PI2, desenvolvido em:
Node.js, GraphQL, AVA, Knex, PostgreSQL e Docker.
Para rodar o projeto, basta ter o Git, Docker e o Docker Compose instalados.
O primeiro passo é clonar o projeto e em seguida entrar em sua raiz:
git clone git@github.com:pi2-inspecao-cabo-de-aco/main-server.git && cd main-server
Para baixar as imagens e subir os containers, rode o comando:
docker-compose up --build
Caso seja necessário, para rodar as migrations, utilize o comando:
docker-compose exec server yarn db:migrate
Após isso, o backend estará disponível e alguns serviços ficam prontos para uso.
O GraphiQL é uma interface gráfica onde é possível testar todas queries
, mutatations
e subscriptions
da aplicação. Ao clicar no botão SCHEMA
, é possível ver uma mini documentação que contém todas elas, onde é possível observar todos os atributos de cada type
.
main-server/
├── migrations/
│ ├── 20190509021053_create_table_reports.js
│ ├── 20190510012439_create_table_cable.js
│ └── ...
├── public/
│ └── ...
├── scripts/
│ └── ...
├── seeds/
│ └── index.js
├── src
│ ├── api/
│ ├── helpers/
│ ├── lib/
│ ├── mutations/
│ ├── queries/
│ ├── subscriptions/
│ └── ...
└── test
├── fixture/
├── specs/
└── ...
migrations: Aqui, armazena-ze todas as migrações realizadas pelo módulo Knex. Esse query builder nos permite gerar todo o schema
do banco de dados, com as tabelas, seus tipos e relações.
public: Contém os arquivos vindos do robô, como fotos, arquivos comprimidos e csvs.
scripts: Todo e qualquer script
a ser executado para realizar alguma ação no banco, formatar algum dado de entrada, configurar ambiente ou coisas afins, devem ser armazenados nesse diretório.
seed: Armazenam todos os arquivos que irão popular o banco de dados previamente para o devido desenvolvimento do projeto.
src: Contém todos os arquivos da aplicação em específico, onde:
- api: armazena todos os aquivos que são exeutados via requisições HTTP por meio do protocolo REST;
- helpers: arquivos com funções genéricas geralmente compartilhadas por um ou mais arquivos ou módulos;
- mutations: arquivos de mutations geradas manualmente em caso de necessidade. São os chamados
custom-resolvers
para as mutations do GraphQl; - queries: similar ao diretório de mutations, este diretório armazena os
custom-resolvers
de queries. - subscriptions: similar ao diretório de queries e mutations, esta pasta é armazena os
custom-resolvers
de subscriptions.
test: Arquivos para testes do sistema.
Para rodar os testes execute o comando:
docker-compose exec server yarn test
Após rodar os testes, para ver a cobertura basta abrir o arquivo coverage/index.html
no navegador e navegar entre as pastas/arquivos para ter mais detalhes.
Quando hover uma mudança em alguma tabela, seja ela relacionado às suas relações ou à seus atributos, deve-se criar uma nova migration para não haver problemas futuros. Para isto, basca executar o comando abaixo e escrever a mudança no arquivo que será criado:
docker-compose exec server yarn knex migrate:make <migration_name>
Para popular o banco, basta utilizar o seed, executando o comando abaixo:
docker-compose exec server yarn seed