Categorygithub.com/kleytonsolinho/golang-clean-arch
module
0.0.0-20240619135215-f84b2db79267
Repository: https://github.com/kleytonsolinho/golang-clean-arch.git
Documentation: pkg.go.dev

# README

GOLang Clean Architecture APP

Este programa em Go é um servidor HTTP/GraphQL e gRPC rodando em Multithreads com Clean Archictecture

Funcionalidades

  • 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.

Como Utilizar localmente:

  1. 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.  
  2. 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
  1. 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.

Como testar localmente:

Portas

HTTP server on port :8000
gRPC server on port :50051
GraphQL server on port :8080

HTTP

  • Acesse a pasta api/ e dispare os dois arquivos ** Necessário instalar o plugin REST Client no VSCode. **

GraphQL

 mutation createOrder {
   createOrder (input:{ id: "teste", Price: 110, Tax: 2 }) {
     id
     Price
     Tax
   }
 }


 query queryOrders {
     orders {
         id
         Price
         Tax
         FinalPrice
     }
 }

gRPC

  • Rode o evans:
evans -r repl
package pb
service OrderService

Para listar as orders utilize

call ListOrders

Para criar orders utilize

call CreateOrder

# Packages

No description provided by the author
No description provided by the author
No description provided by the author