O serviço irá ler o arquivo de entrada, separar as linhas em colunas, realizar a higienização dos dados (remover acentos e converter para maiúsculo), validar os CPFs/CNPJs e persistir os dados no banco de dados PostgreSQL. Além disso, o serviço utiliza o padrão Clean Code ao nomear variáveis, funções e estruturas de dados de forma clara e concisa. Também são incluídos comentários no código para explicar o funcionamento de cada parte do serviço. Por fim, é importante destacar que o serviço foi otimizado para ter uma performance de 1 minuto, utilizando contextos para controlar o tempo máximo de execução e transações para reduzir a quantidade de operações de I/O no banco de dados.
database/sql
Fornece uma interface de banco de dados SQL genéricaenconding/csv
lê e grava arquivos CSVfmt
fornece funções de formataçãoio
fornece primitivas básicas de E/S.log
fornece um pacote de registro simples.os
fornece uma interface independente de uma plataforma para o sistema operacional.regexp
fornece funcionalidade de expressão regilarstrconv
fornece funções para converter strings em tipos numéricosstrings
fornece funções para manipular stringsgithub.com/go-playground/validator
fornece um pacote de validação
O código define uma estrutura chamada Record que apresente um único registro do arquivo csv/txt. Cada campo na struct possui uma marca de validação que especifica as regras de validaçã para o campo. As regras são dfinidas através da função validator
.
A função CleanData
remove espaços em branco iniciais e finais de cada campo nos dados.
A função InsertData
insere os dados em um banco de dados PostgreSQL.
A função ValidateRecords
valida cada registro nos dados utilizando a função validator
A função main
lê os dados do arquivo, inseri no banco de dados e valida os campos. Se qualquer uma dessas etapas falhar, o programa registrará uma mensagem de erro e será encerrado.
docker-compose up
Atualmente venho me deparado com o erro abaixo, mesmo tenho feito todas as importações e seguindo os comando de 'go.mod init' e 'go.mod tidy'
> [7/7] RUN go build -o main .:
#0 1.741 go: github.com/go-playground/[email protected] requires
#0 1.741 golang.org/x/[email protected]: missing go.sum entry; to add it:
#0 1.741 go mod download golang.org/x/text