Payment Transfer API
O que é o projeto ?
API para transferência monetaria, baseada em um desafio da DevGym
Tecnologias usadas
- Golang 1.20
- Postgres
- Docker
-
Clone esse repositorio
- Via HTTP
git clone https://github.com/RickChaves29/payment_tranfer_api.git
- Via SSH
git@github.com:RickChaves29/payment_tranfer_api.git
-
Ainda no terminal, copie a variável de ambiente que está no arquivo .env.example e cole no arquivo .bashrc ou .profile adicionando a palavra chave export antes.
OBS: O Arquivo .bashrc ou .profile fica na pasta raiz do seu úsuario
export PAYMENT_DB='<url de conexão do db>'
-
Voltando para pasta onde você clonou o projeto rode os seguintes comandos:
- Baixar todas as dependências
go mod download
- Rodar o projeto
go run server/main.go
OBS: caso não tenha setado a variavel de ambiente use o comando
export PAYMENT_DB='<url de conexão do db>' && go run server/main.go
Como rodar o projeto apartir da imagem Docker
-
Puxe a imagem no Docker Hub
docker pull rickchaves29/payment_transfer_api:<tag de versão>
-
Crie um container baseado na imagem
docker run --name 'nome do container' -e PAYMENT_DB='<numero da porta>' \
-p 4040:'<numero da porta>'/tcp rickchaves29/payment_transfer_api:'tag version'
Como rodar o projeto usando o Docker Compose no modo de desenvolvimento
OBS: Por Padrão o Docker Compose sempre ir chamar o arquivo compose.yaml
-
Clonar esse repositório pelo terminal
- Via HTTP
git clone https://github.com/RickChaves29/payment_transfer_api.git
- Via SSH
git clone git@github.com:RickChaves29/payment_transfer_api.git
-
Ao entrar na pasta do projeto rode o seguinte comando no terminal
- Copie do arquivo .env.example as variaveis de ambiente e crie o arquivo .env e cole as variaveis, setando seus valores
- Para subir os containers
docker compose up --remove-orphans
- Para remove os containers
docker compose down
OBS: A flag --remove-orphans é opcinal, ela remove todos snapshots criados pelo comando up
Criação da tabela no banco de daos
OBS: Caso não exista a tabela no banco de dados, a tabela é criada automaticamente pela aplicação
Rotas da API
GET - /api/v1/users/:id
Retorna um json com base no id enviado na uri:
{
"id": "0000",
"balance": 1000
}
GET - /api/v1/transfer
Recebe um json:
{
"payer": "0000",
"receive": "1111",
"amount": 0
}
Usuários para testar a API
[
{
"id": "1234",
"balance": 1000
}
{
"id": "4321",
"balance": 2000
}
]