pismo-transaction-api
API responsavel por cadastrar e manipular transações monetarias em contas. Case proposto pela Pismo. Toda a informação sobre ROTAS esta disponivel via swagger, ao iniciar o modulo, consultar:
http://localhost:{PORT}/api/v1/swagger/index.html
- GoLang - compilador da linguagem Go
- Go Mod - gerenciador de dependencias
- Docker - gerador e manipulador de containers
- Docker Compose - ferramenta de definição e compartilhamento com containers
Clonando o projeto
cd $PROJECT_HOME
git clone https://github.com/SamuelVasconc/pismo-transaction-api.git
Instalando dependências
$ go get
Removendo dependencias indesejadas
$ go mod tidy
Baixando as dependencias para a vendor local
$ go mod vendor
Configurando as variáveis de ambiente
Nome | Descrição | Valor Padrão | Obrigatório |
---|---|---|---|
DBHOST | Endereço do banco a ser acessado | ✅ | |
DBNAME | Nome do banco a ser acessado | ✅ | |
DBPASSWORD | Senha do banco a ser acessado | ✅ | |
DBPORT | Porta do banco a ser acessado | ✅ | |
DBUSER | Usuário do banco a ser acessado | ✅ | |
CONNMAXLIFETIME | Tempo de vida da conexão com o banco | ✅ | |
MAXIDLECONNS | Quantidade máxima de conexões ociosas | ✅ | |
MAXOPENCONNS | Quantidade máxima de conexões abertas | ✅ | |
PORT | Porta na qual API sera instanciada | ✅ | |
HTTP_READ_TIMEOUT | Tempo maximo de leitura | ✅ | |
HTTP_WRITE_TIMEOUT | Tempo maximo de escrita | ✅ | |
GROUPREQUEST | Prefixo da url nas chamadas http | ✅ |
pismo-transaction-api
|-- cmd
|-- server.go
|-- handlers
|-- config
|-- db
|-- middlewares
|-- interfaces
|-- migrations
|-- models
|-- repositories
|-- mocks
|-- usecases
|-- utils
|-- .gitignore
|-- README.md
Está camada trata os arquivos de orquestração da API.
Aqui está o orquestrador do server, o arquivo principal que apenas chama as outras camadas.
Está camada trata as configurações gerais do sistema.
Está camada trata as conexões com o banco de dados.
Está camada terá todos os contratos definidos nas interfaces de usecases e repositories.
Reúne todos os artefatos que geram algum mock para o sistema.
Está camada vai armazenar qualquer object struct. Exemplo: Cliente, Estudante, Livro.
Repository vai armazenar qualquer manipulador de banco de dados ou até mesmo chamado HTTP para outros serviços.
Reúne utilitários para auxiliar nos processos comuns aos testes ou configurações do mesmo.
Gerando container Postgres
# execute o comando abaixo para gerar o container apartir do arquivo docker-compose.yml na aplicação
$ sudo docker-compose up -d
# OU
# execute o comando abaixo para gerar o container apartir do docker
$ docker run --name container_postgres -e "POSTGRES_PASSWORD=1234" -p 15432:5432 -d postgres
Buildando o projeto
# execute o comando abaixo para buildar a aplicação e garantir que nada está quebrado
$ go build
Executando o projeto
$ go run main.go or ./pismo-transaction-api
# Para execução dos testes automatizados executar o comando abaixo no terminal dentro da pasta da aplicação
$ go test -v -cover ./...
# Para gerar a interface mostrando todos os arquivos e as linhas "Covered", "Not Covered" e "Not Tracked":
$ go test ./... -coverprofile fmtcoverage.html fmt
$ go test ./... -coverprofile cover.out
$ go tool cover -html=cover.out -o cover.html
$ open 'cover.html' file