Repository
O Repository é um conceito introduzido no Data Mapper Pattern ou Repository Pattern que consiste em uma ponte entre nossa aplicação e a fonte de dados, seja ela um banco de dados, um arquivo físico ou qualquer outro meio de persistência de dados da aplicação.
No repositório definimos as operações que queremos fazer com as notas que estão no banco de dados.
Para usar o banco de dados, temos 3 formas, da mais baixo nível até a mais abstrata/prática:
- Usando um driver nativo, como o mysql2;
- Usando um query builder, como o knex.js; ou
- Usando um Object-Relational Mapping (ou ORM), como Sequelize ou (especialmente com Typescript) o TypeORM, que foi a minha escolha para esse projeto.
Um ORM faz o mapeamento das entidades do banco para classes/interfaces/módulos/estruturas (seja lá como a linguagem chame) no código da aplicação e também mapeia os relacionamentos.
Na maior parte do tempo, ao usar um ORM, não precisamos escrever SQL “na mão”, só pra alguma query muito elaborada (o que chegou mais perto disso foi filtragem ao listar as notas).
Exemplo no repository realizamos o calculo das transações e no service criamos essa transação com os dados do repositories.
Service
- Ele tem como objetivo abstrair regras de negócio das rotas, além de tornar nosso código mais reutilizável;
- O Service deve ter um nome descritivo (ex.: updateDeliveryManProfileService);
- O service só tem um método, aqui chamado de
execute()
. É nele que a mágica acontece; - Para este service funcionar, foi preciso ter acesso aos usuários, tags e notas. Como abstraímos o banco de dados em repositories, é eles que utilizamos para tal.
Nesse desafio vamos fazer a conexão do banco de dados com a nossa aplicação, o projeto de gestão de transações. Nossa estrutura é baseada em service, model e repositories. Ao fazer a conexão com o banco precisamos vamos usar o TypeOrm, além disso vamos utilizar o envio de arquivos com o multer.
A ideia principal do nosso projeto e amarzenar as transações do usuário permitindo que o mesmo possa realizar transações e criar novos registro no banco de daod sa partir do envio de um arquivo csv.
- NodeJS na versão 8 ou superior;
- yarn ou npm;
- Postman ou Insomnia, ( para teste de API).
Agora vamos clonar o repositório
https://github.com/mauriani/Desafio-Database-upload.git
Antes de dá start na aplicação você tem que instalar as dependências através do comando:
yarn
or
npm install
Depois disso basta rodar:
yarn dev:server