Skip to content

Arquitetura de microsserviços para gestão de pedidos fornecendo interfaces REST, GraphQL e gRPC.

Notifications You must be signed in to change notification settings

lcidral/go-expert-list-orders

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Serviço de Pedidos

Arquitetura de microsserviços para gestão de pedidos fornecendo interfaces REST, GraphQL e gRPC.

Arquitetura

Este projeto segue o Modelo C4 para documentação da arquitetura. Visualize os diagramas em /docs/c4:

  • Contexto - Visão geral do sistema e interações externas
  • Container - Componentes técnicos e seus relacionamentos
  • Componente - Estrutura interna e organização
  • Código - Classes e interfaces principais
Contexto Container Componente Código
Contexto Container Componente Código

Serviços

  • API REST: :8080
  • GraphQL: :8081
  • gRPC: :50051

Início Rápido

# Iniciar todos os serviços
docker compose up -d

# Verificar status dos serviços
docker compose ps

Documentação da API

Antes de iniciar as requisições para listar as ordens é importante que você execute pelo menos uma única vez a requisição HTTP para criar uma nova ordem.

Use o seguinte comando no terminal ou execute o arquivo tests/http/create_order.http em sua IDE (se for compatível).

curl -X POST "http://localhost:8080/order" \
-H "Content-Type: application/json" \
-d '{
  "customer_id": "550e8400-e29b-41d4-a716-446655440000",
  "status": "pending",
  "total_amount": 150.50
}'

Endpoints REST

Use este comando para executar a requisição diretamente no Terminal, ou use o arquivo .http que está na pasta tests/http/rest_list_orders.http.

curl -X GET "http://localhost:8080/order" -H "Accept: application/json"

GraphQL

Use esta consulta para listar as ordens através do GraphQL, ou use o arquivo .http que está na pasta tests/http/graphql_list_orders.http.

query {
  listOrders {
    id
    customerId
    status
    totalAmount
  }
}

gRPC

Um cliente adicional foi desenvolvido para listar as ordens através do gRPC, você pode executá-lo usando o seguinte comando.

go run tests/grpc/client.go
service OrderService {
    rpc ListOrders(ListOrdersRequest) returns (ListOrdersResponse);
}

Estrutura do Projeto

.
├── api/          # Definições de API
├── cmd/          # Pontos de entrada dos serviços
├── internal/     # Código privado da aplicação
├── migrations/   # Migrações do banco de dados
├── tests/        # Testes
└── docs/         # Documentação

Requisitos

  • Go 1.23+
  • Docker & Docker Compose
  • PostgreSQL (fornecido via Docker)

About

Arquitetura de microsserviços para gestão de pedidos fornecendo interfaces REST, GraphQL e gRPC.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published