Tendo em vista que a CTT de Portugal disponibiliza gratuitamente a base de distritos, concelhos, códigos postais e apartados, decidi realizar um projeto para estudo, com três fases:

  • Aplicação de Conversão dos dados provenientes de arquivos com formato CSV para o banco de dados SQLite (.net core);

  • Camada de serviço Restful com o banco de dados convertido, incorporado (nodejs);

  • Aplicativo em formato de web app para consumo da camada de serviço (angular);

Fase 0 – Definição

Trata-se de um projeto de estudo e por isso optei por criar três camadas em três linguagens diferentes. No momento desta publicação o objeto de estudo que estou em foco é a linguagem da terceira fase, o Angular e, portanto, gostaria imensamente que a comunidade propusesse melhorias.

Defini que a base de dados deveria ser SQLite para que pudesse realizar a distribuição da base incluída na camada de serviço. Como trata-se de uma base de somente leitura, não há problema em incluí-la diretamente em um container, sem que fosse necessário incluir mais uma camada de servidor de banco de dados em separado, o que também pode ser feito.

Fase 1 – App de Conversão

Optei por criar uma solução em .net core para simplificar a carga, geração de lista de objetos e as inserções na base de dados. Com base na documentação da CTT para a leitura dos dados, desenhei as classes e lista de objetos necessários para realizar o processo de importação do arquivo CSV para memória e em seguida, a persistência da informação na base de dados.

Fase 2 – Webservice

De forma a simplificar a distribuição da consulta, optei por uma camada de serviço em NodeJs com uso da biblioteca Knex para consultar a base de dados gerada na Fase 1. Para diminuir a curva de trabalho, usei o código que já havia criado no projeto de consulta da base de correios do Brasil.

Fase 3 – Web App

O Web App é a camada de interface para a consulta dos usuários que possui a lógica de consumo da camada de serviços e exibição dos dados. Optei realizar esta camada com a linguagem Angular.

Recursos:

Melhorias:

Não deixe de propor melhorias para o projeto, que é totalmente gratuito e com código aberto, realizar melhorias e quando possível, fazer um fork do projeto no github e geração de solicitações de incorporação (pull request) para que outras pessoas possam, não somente aprender como também reutilizar.

Etiquetas: , , , , , , , , , , , , ,
    • Olá, Carlos, boa tarde.
      Tens razão. Não parei para ver qual o problema, mas acredito que algum bot que monitora o projecto alertou-me sobre vulnerabilidades e fiz a atualização sem efetuar o teste antes o que fez com o aplicativo parasse de funcionar. Talvez algo relacionado ao knex.

      Em algum momento, talvez, eu acerte. Se preferires acertar, faça o Pull Request no projecto que incorporo ao master.

      Foi um projecto que fiz para estudo e não tenho retorno algum sobre.

Leave a Reply