Estamos felizes de ter você no nosso processo seletivo para Equipe de Integração!
Neste processo, vamos analisar seu conhecimento sobre APIs Rest, JEST, Javascript (e/ou Typescript) e Git!
Crie um repositório público no Github. Assim que finalizar seu desafio, envie o link do repositório para o endereço de email talentos@multiplier.com.br
Lembre-se que estamos analisando seu conhecimento Git também, então utilize Commits Semânticos no processo de desenvolvimento do desafio.
ex:
- Caso esteja desenvolvendo o endpoint de Produtos, crie uma branch chamada
feature/endpoint-produtos
. - Faça os commits semânticos nela, ex:
feat(Produtos): Criado endpoint GET de produtos
. - Quando finalizar, realize o merge para a branch
main
Caso tenha alguma dúvida sobre o desafio, abra uma issue neste repositório e alguém da nossa equipe de integração vai te ajudar! Utilizamos as issues para que cada dúvida possa servir de ajuda para o próximo!
Resumo:
- Criar um Banco de dados MySQL
- Criar uma api para consumir o banco de dados Mysql utilizando Sequelize como ORM
Diferenciais:
Você deverá usar o express
como servidor e o sequelize
como ORM. Você poderá usar ou não typescript se seguir esta opção. Fica ao seu critério.
coluna | tipo | descrição |
---|---|---|
id | int | Chave primária da tabela |
codigo | varchar | Código da Categoria (slug) |
titulo | varchar | Título da Categoria |
status | int | 0 - Inativo, 1 - Ativo |
coluna | tipo | descrição |
---|---|---|
id | int | Chave primária da tabela |
idCategoria | int | id da Categoria (fk) |
codigo | varchar | SKU do Produto |
nome | varchar | Nome do Produto |
descricao | text | Descrição do Produto |
valor | decimal | Valor do Produto |
status | int | 0 - Inativo, 1 - Ativo |
coluna | tipo | descrição |
---|---|---|
id | int | Chave primária da tabela |
idProduto | int | id do Produto (fk) |
quantidade | int | Quantidade em estoque |
reserva | int | Quantidade reservada |
status | int | 0 - Inativo, 1 - Ativo |
2. Criar primeiramente os testes da aplicação utilizando o jest
- Categorias
[GET] /categorias - Lista todas as Categorias
[GET] /categorias/:id - Busca uma Categoria por id
[POST] /categorias - Cria uma Categoria
[PATCH] /categorias/:id - Edita uma Categoria
[DELETE] /categorias/:id - Deleta uma Categoria (deve atualizar o produto setando idCategoria como NULL para produtos que utilizam essa categoria)
- Produtos
[GET] /produtos - Lista todos os Produtos
[GET] /produtos/:id - Busca um Produto por id
[POST] /produtos - Cria um Produto
[PATCH] /produtos/:id - Edita um Produto
[DELETE] /produtos/:id - Deleta um Produto (e seu estoque)
- Estoque
* Quando um produto é criado, deve ser criado um estoque com quantidade 0 para o Produto
* Só pode haver 1 estoque para um mesmo Produto
[GET] /produtos/:id/estoque - Lista o estoque para o Produto pelo id
[PATCH] /produtos/:id/estoque - Edita o Estoque para o Produto pelo id
[DELETE] /produtos/:id/estoque - Deve retornar o status [501] - Not Implemented. (não se pode deletar um estoque)
-- Equipe Multiplier