Este repositório visa solucionar o desafio de Backend challenge, que inclui as seguintes funcionalidades:
- CRUD de motoristas (Criação, Listagem, Atualização e Remoção)
- CRUD de veículos (Criação, Listagem, Atualização e Remoção)
- Vinculação de motorista a um veículo
Para estruturar e organizar a aplicação, foram seguidas algumas recomendações do Standard Go Project Layout.
Para executar a aplicação localmente, é necessário ter instalado:
*Você pode executar a aplicação usando SQLite em memória.
Para rodar a aplicação, crie um arquivo .env
na pasta raiz do projeto utilizando como referência o arquivo .env-template
. Certifique-se de preencher corretamente as informações DB_DRIVER
e DB_CONNECTION
para a conexão com o banco de dados. Este projeto aceita tanto a utilização do SQLite quanto do MySQL como banco de dados.
Após configurar corretamente a conexão ao banco de dados, para iniciar a API, utilize o seguinte comando:
$ go run cmd/main.go
Starting web server on port :8080
Para utilizar o SQLite como banco de dados da aplicação, é necessário configurar o arquivo .env
e garantir que no arquivo cmd/main.go
, a importação do driver esteja sendo realizada.
DB_DRIVER=sqlite3
DB_CONNECTION=:memory:
...
import (
...
// mysql
// _ "github.com/go-sql-driver/mysql"
// sqlite
_ "github.com/mattn/go-sqlite3"
...
)
Para utilizar o MySQL como banco de dados da aplicação, também é necessário configurar o arquivo .env
e garantir que no arquivo cmd/main.go
, a importação do driver esteja sendo realizada.
DB_DRIVER=mysql
DB_CONNECTION=root:root@tcp(mysql:3306)/gobrax
...
import (
...
// mysql
_ "github.com/go-sql-driver/mysql"
// sqlite
// _ "github.com/mattn/go-sqlite3"
...
)
No entanto, será necessário ter uma instância do MySQL em execução
. Para isso, você pode utilizar o arquivo docker-compose.yaml
presente na raiz do projeto. Para criar um contêiner executando a instância MySQL, utilize o seguinte comando:
docker-compose up
Para realizar o build da Docker Image, você pode usar os seguintes comandos:
docker build -t gobrax-image .
Este comando criará uma imagem chamada gobrax-image
se o código e suas dependências estiverem corretos. Para criar um contêiner utilizando a imagem, utilize este comando:
docker run -p 8080:8080 gobrax-image