Repositório de estudo do NLW Journey da trilha de Go Language
Para utilizar alguns comandos go, como o go install é necessário que o mesmo esteja na variável de ambiente.
export GOPATH=$HOME/go
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
Adicione o export no arquivo ~/.bashrc
Rodar o conteudo do arquivo .env
(exemplo em .env.example
)
Pegar swagger e transformar em entidades/struct do go
Também estamos usando o github.com/go-playground/validator
através das tags x-go-extra-tags
para validar nosso JSON
Instalação
go install github.com/discord-gophers/goapi-gen@latest
Uso
goapi-gen --out ./internal/api/spec/journey.spec.go ./internal/api/spec/journey.spec.json
Criar tabelas no banco, ou seja, fazer o migrate Instalação
go install github.com/jackc/tern/v2@latest
Uso
tern migrate --migrations ./internal/pgstore/migrations --config ./internal/pgstore/migrations/tern.conf
Gerar as models da tabelas do banco Instalação
go install github.com/sqlc-dev/sqlc/cmd/sqlc@latest
Uso
sqlc generate -f ./internal/pgstore/sqlc.yml
No VSCode ctrl shift p
opção Go: Generate Interface Stubs
.
Informar o package com o type e o package com a interface
Exemplo:
api API spec.ServerInterface
* Para fazer essa chama o package deve ter type
neste padrão:
type API struct {}
Dentro do go.gen
usamos os boilerplate para facilitar manutenção e geração de novos arquivos
Exemplo do arquivo
//go:generate goapi-gen --package=spec --out ./internal/api/spec/journey.spec.go ./internal/api/spec/journey.spec.json
//go:generate tern migrate --migrations ./internal/pgstore/migrations --config ./internal/pgstore/migrations/tern.conf
//go:generate sqlc generate -f ./internal/pgstore/sqlc.yml
Para chamar o go.gen
go generate ./...
- Baixar dependencias que o projeto precisa para executar
go mod tidy
- Atualizar as dependencias
go get -u ./...
docker compose up -d