Closed athossampayo closed 2 years ago
Concordo que não deveria estar no módulo cmd
, vou modificar! Pensando bem, agora acho que deveria estar no módulo postgres
, já que caso seja implementada uma solução com outro db, não seria necessária a verificação. O que acha?
Pensando bem, agora acho que deveria esatr no módulo
postgres
Perfeito! É o CreateCompanies
de db/postgres.go
(dentro do módulo db
) que tem essa dependência, verdade!
@cuducos tomei por opção manter a validação no cmd
porem a partir da variável db
, deixando fácil a adaptação para quando for incluir a opção de utilizar outro banco. Porém ainda estou um pouco viciado com o paradigma OOP, acha que faz sentido? Ou acha que mudo o local da checagem?
Vale comentar que não quis deixar a validação no CreateCompanies
pois o problema é o erro acontecer após um tempo de espera e de processamento gastos, já que o transform
rodará o createJSONRecordsTask
primeiro.
Tá lindo. Podes só adicionar a documentação, já que é uma função pública?
// AssertPostgresCLIExists does this this and that etc.
func AssertPostgresCLIExists() error {
(ah, eu sei que o nome dessa função é bem auto-descritivo, mas isso é um padrão em proejtos Go, pelo o que eu entendi… só fiquei curioso agora pq, salvo engano, golint
pegava isso e staticcheck
não pegou… sabe de algo @danielfireman?)
@cuducos feito!
Não conhecia o padrão, então ficou de aprendizado. Realmente rodei o staticcheck
localmente antes e não pegou, o que já teria corrigido de início.
Edit:
Caso interessa, encontrei a discussão sobre a checagem com o staticcheck
: https://github.com/dominikh/go-tools/issues/1044
Tentei deixar o mais simples possível.
Encontrei duas abordagens para a checagem, usando o exec.LookPath ou o exec.Command, mas com o Command precisaria abrir um shell para conseguir rodar comandos nativos para checar se existe o psql (rodaria o
command -v psql
), então achei mais simples usar o LookPath.Estou aberto para corrigir algo. :smile: