Skip to content

LuizGPG/OficinaPitStop

Repository files navigation

OficinaPitStop

Descrição

Consiste em uma API capaz de realizar crud em GraphQL de duas entidades. Pode ser util como base de diversos projetos de um software para uma farmácia a uma oficina, que foi o objetivo inicial.

Don't write code that guesses the future. Arrange code, so you can adapt to the future when it arrives.

Objetivo

API criada para base de estudos de projetos em GraphQL. O objetivo é entender o que é necessário para realizar um crud em GraphQL através de querys e mutations. A complexidade da API foi reduzida para que seja de fácil entendimento para quem deseja aprender sobre o uso de microsserviços.

Também tem como premissa enfatizar a eficiencia de testes. CodeCoverage

Esses serviços devem ser testados através de testes unitarios, cada teste deve ser executado com o minimo de responsabilidade possível, caso um mesmo metodo tenha diversas situações, todos os possíveis caminhos devem ser testados separadamente.

A camada de repository geralmente é coberta através de testes de integração. Mas também é possível faze-los isoladamente com testes unitários.

Nessa API os testes de integração foram feitos com acesso a base de dados que é utilizada no projeto. Dessa forma garantimos que o mapeamento das tabelas e suas entidades estão sempre corretos, caso a estrutura da base seja alterada de alguma forma os testes de integração não vão obter sucesso.

Action .NET Core

Foi criada uma action para validar a cada commit se o codigo esta buildando e os testes estão passando. Pode ser visto o na aba actions.

Banco de dados - Instalação

O banco de dados utilizado é o MySQL e deve ser criado conforme scripts do diretorio de repositório.

Conforme mencionado anteriormente os testes de integração são executados na base de dados. Estes foram criados para que utilize apenas a estrutura do banco, sendo assim, não é necessário a criação de registros para que os testes passem. Também fiz de uma maneira que a integração seja feita de ponta a ponta com o crud, criando, atualizando, consultando e por fim removendo o registro, dessa forma não fica lixo na base.

Utilizando a API

Após a api rodando seja ela sendo executada através de containers ou no ambiente de desenvolvimento, é possível realizar os cruds de duas entidades criadas. Os exemplos sitados a baixo são executados através do playground disponível na biblioteca do graphql. Nesta aplicação é possível acessar com o caminho: http://localhost:5000/ui/playground


Criando - Produto

mutation{
  create_produto(create:{
    descricao: "Descrição produto teste"
    preco: 17.99
    quantidade: 5
  })
}


Listando - Produto

{
  produtos {
    codigo
    descricao
    preco
    quantidade
  }
}


Atualizando - Produto

mutation {
  update_produto(
    update: {
      codigo: 1
      descricao: "Atualizando produto"
      quantidade: 10
      preco: 15.00
    }
  )
}


Deletando - Produto

mutation {
  delete_produto(delete: { codigo: 1 })
}

Essas mesmas ações também se aplicam para a entidade de Marca.

Docker

Disponibilizei a imagem no docker hub e pode ser feito um pull com o comando:

docker pull luizidocker/oficinapitstop:latest

Ou fazendo clone do projeto e executando o compose .

docker-compose up -d

Dessa forma o container da aplicação e do banco de dados já é criado corretamente.

Para criar a imagem da api precisei apenas executar o comando a baixo no diretorio onde esta o Dockerfile:

docker build -t oficinapitstop:1.0 .

Desta forma a imagem já foi criada corretamente. Não sendo necessário realizar essa ação se não houver alteração de código. imagemDocker

Releases

No releases published

Packages

No packages published

Languages