Olá devs!
Agora é a hora de botar a mão na massa. Pra este desafio, você precisará criar a listagem das orders.
Esta listagem precisa ser feita com:
-
Endpoint REST (GET /order)
-
Service ListOrders com GRPC
-
Query ListOrders GraphQL
Clone o repositório com o comando abaixo:
git clone https://github.com/luiscovelo/goexpert-clean-arch.git
Entre no diretório do projeto:
cd goexpert-clean-arch
Execute o docker para subir a imagem do MySQL e do RabbitMQ:
docker-compose up -d
Após subir as imagens, vamos verificar o banco de dados está orders
está criado:
docker exec -it mysql bash -c "mysql -u root -proot -D orders"
Caso não esteja criado, sera exibido no terminal a seguinte mensagem: Unknown database 'orders'
, portanto, execute o seguinte comando:
docker exec -it mysql bash -c "mysql -u root -proot"
CREATE DATABASE orders;
Com o banco de dados criados, vamos verificar se existe a tabela orders
:
docker exec -it mysql bash -c "mysql -u root -proot -D orders"
Rode o camando abaixo verificar se existe:
select * from orders.orders;
Caso não, execute o comando abaixo:
CREATE TABLE orders (id varchar(255) NOT NULL, price float NOT NULL, tax float NOT NULL, final_price float NOT NULL, PRIMARY KEY (id));
No diretório do projeto, execute o comando abaixo para baixar as dependências:
go mod tidy
Agora iremos executar nossa aplicação:
cd cmd/ordersystem && go run main.go wire_gen.go
Caso ocorra tudo bem, os serviços estarão rodando nos endereços:
-
Rest em http://localhost:8000:
- Use os arquivos na pasta
/api
para interagir; - Será necessário instalar a extensão: https://marketplace.visualstudio.com/items?itemName=humao.rest-client.
- Use os arquivos na pasta
-
GraphQL em http://localhost:8080:
- Use o template abaixo:
mutation createOrder { createOrder(input: { id: "change-id", Price: 10.0, Tax: 0.5 }) { id Price Tax FinalPrice } } query orders { listOrders { id Price Tax FinalPrice } }
- Use o template abaixo:
-
gRPC na porta 50051:
- Será necessário uma aplicação externa para interagir, sugiro a ferramenta evans.