Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/valchanoficial/desafiodatabaserelations

Rocketseat - Desafio: Database relations
https://github.com/valchanoficial/desafiodatabaserelations

express javascript jest nodejs pg postgresql typeorm typescript

Last synced: 4 days ago
JSON representation

Rocketseat - Desafio: Database relations

Awesome Lists containing this project

README

        

# Rocketseat - Desafio: Database relations

## Sobre o desafio

Desenvolvimento de uma nova aplicação para reforçar os conhecimentos em Node.js junto ao TypeScript, incluindo o uso de banco de dados com o TypeORM, e relacionamentos ManyToMany.
Essa será uma aplicação que deve permitir a criação de clientes, produtos e pedidos, onde o cliente pode gerar novos pedidos de compra de certos produtos, como um pequeno e-commerce.

## Requisitos técnicos
- PostgreSQL (infos no arquivo ormconfig.json)

## Rotas
- **`POST /customers:`** A rota deve receber name e email dentro do corpo da requisição, sendo o name o nome do cliente a ser cadastrado. Ao cadastrar um novo cliente, ele deve ser armazenado dentro do seu banco de dados e deve ser retornado o cliente criado. Ao cadastrar no banco de dados, na tabela customers deverá possuir os campos name, email, created_at, updated_at.
- **`POST /products:`** Essa rota deve receber name, price e quantity dentro do corpo da requisição, sendo o name o nome do produto a ser cadastrado, price o valor unitário e quantity a quantidade existente em estoque do produto. Com esses dados devem ser criados no banco de dados um novo produto com os seguintes campos: name, price, quantity, created_at, updated_at.
- **`POST /orders/:`** Nessa rota você deve receber no corpo da requisição o customer_id e um array de products, contendo o id e a quantity que você deseja adicionar a um novo pedido. Aqui você deve cadastrar na tabela order um novo pedido, que estará relacionado ao customer_id informado, created_at e updated_at . Já na tabela orders_products, você deve armazenar o product_id, order_id, price e quantity, created_at e updated_at.
- **`GET /orders/id:`** Essa rota deve retornar as informações de um pedido específico, com todas as informações que podem ser recuperadas através dos relacionamentos entre a tabela orders, customers e orders_products.

## Start
```js
yarn // instala dependências
yarn typeorm migration:run // cria tabelas
yarn dev:server // inicia aplicação
yarn test // executa os testes
```