Este programa em Go é um servidor HTTP/GraphQL e gRPC rodando em Multithreads com Clean Archictecture
-
Cadastro de Orders:
- O servidor permite cadastrar Ordens utilizando HTTP, GraphQL e gRPC.
-
Listagem de Orders:
- O servidor permite listar todas as Ordens utilizando HTTP, GraphQL e gRPC.
- Requisitos:
- Certifique-se de ter o Go instalado em sua máquina.
- Certifique-se de ter Evans e gRPC instalado em sua máquina.
- Certifique-se de ter GraphQL (gqlgen) instalado em sua máquina.
- Certifique-se de ter o Docker instalado em sua máquina.
- Clonar o Repositório:
git clone https://github.com/kleytonsolinho/golang-clean-arch.git
3. Acesse a pasta do app:
cd golang-clean-arch
4. Rode o docker para subir o serviço RabbitMQ e MySQL:
docker-compose up -d
- Acesse a pasta cmd/orderssystem e rode o main.go e wire_gen.go:
cd cmd/ordersystem
go run main.go wire_gen.go
Observação: Ao iniciar a aplicação, o processo de migração é executado automaticamente, não sendo necessário realizá-lo manualmente.
HTTP server on port :8000
gRPC server on port :50051
GraphQL server on port :8080
- Acesse a pasta api/ e dispare os dois arquivos ** Necessário instalar o plugin REST Client no VSCode. **
- Abra a página do GraphQL na porta 8080 e execute a mutation ou query abaixo: http://localhost:8080/
mutation createOrder {
createOrder (input:{ id: "teste", Price: 110, Tax: 2 }) {
id
Price
Tax
}
}
query queryOrders {
orders {
id
Price
Tax
FinalPrice
}
}
- Rode o evans:
evans -r repl
package pb
service OrderService
Para listar as orders utilize
call ListOrders
Para criar orders utilize
call CreateOrder