Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/aleroxac/goexpert-cleanarch
goexpert-cleanarch
https://github.com/aleroxac/goexpert-cleanarch
clean-architecture fullcycle go goexpert golang
Last synced: about 2 months ago
JSON representation
goexpert-cleanarch
- Host: GitHub
- URL: https://github.com/aleroxac/goexpert-cleanarch
- Owner: aleroxac
- Created: 2024-04-18T11:34:42.000Z (9 months ago)
- Default Branch: main
- Last Pushed: 2024-05-16T16:50:24.000Z (8 months ago)
- Last Synced: 2024-05-17T13:31:43.694Z (8 months ago)
- Topics: clean-architecture, fullcycle, go, goexpert, golang
- Language: Go
- Homepage: https://github.com/aleroxac/goexpert-cleanarch
- Size: 59.6 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# goexpert-cleanarch
## O desafio
Criar uma API onde seja possível criar(já está pronto) e listar(este é o desafio) ordens de serviços, informando um preço e uma taxa, e então retornar o preço final.## Como rodar o projeto
1. Instale as dependências e suba os containers
``` shell
make install
make up
```2. Teste a aplicação: REST API server
- faça uma chamada POST para criar uma nova order via rest-client usando o arquivo [api.http](api/api.http)
- faça uma chamada GET para listar as orders via rest-client usando o arquivo [api.http](api/api.http)3. Teste a aplicação: gRPC server
``` shell
## crie uma nova order
evans --proto internal/infra/grpc/protofiles/order.proto --host localhost --port 50051
=> call CreateOrder
=> 2
=> 10.5
=> 0.5## liste as orders
evans --proto internal/infra/grpc/protofiles/order.proto --host localhost --port 50051
=> call ListOrders
```4. Teste a aplicação: GraphQL server
``` shell
## crie uma nova order
mutation createOrder {
createOrder(input: {id:"3", Price: 10.5, Tax: 0.5}) {
id
Price
Tax
}
}## liste as orders
query queryOrders {
listOrders {
id
Price
Tax
FinalPrice
}
}
```5. Baixe os containers
``` shell
make down
```## Funcionalidades da Linguagem Utilizadas
- di: wire
- configs: viper
- tests: testify
- messaging: amqp(rabbitmq)
- apis: net/http, grpc, graphql
- database/sql: mysql, sqlite3(unit-tests)## Requisitos
- [x] Esta API deve conter um servidor REST, GraphQL e gRPC.
- [x] Endpoint REST (GET /order)
- [x] Service ListOrders com GRPC
- [x] Query ListOrders GraphQL
- [x] Criar requests para criar e listar orders no arquivo api.http
- [x] Criar as migrações necessárias
- [x] Usar docker e docker-compose para rodar tudo via containers
- [x] Documentar informações relevantes sobre o projeto e como executá-lo