Giter Site home page Giter Site logo

soulpet-back's People

Contributors

cristianoans avatar thomazinig avatar dayse-guedes avatar jose-almir avatar fernanda-franco avatar juliocesarcodes avatar gabriel-soulcode avatar italobaracho avatar

Forkers

dayse-guedes

soulpet-back's Issues

[BE-19] Criar recurso GET para listagem de Pedidos

Crie quatro rotas GET para listagem de pedidos.

  • /pedidos
    Esta rota deve listar todos os pedidos.
  • /pedidos/:id
    Esta rota deve mostrar os dados do pedido de acordo com o id fornecido. O pedido retornado deve incluir os valores do produto e do cliente relacionado.
  • /pedidos/produtos/:id
    Esta rota deve mostrar os dados do pedido de acordo com o id do produto fornecido. O pedido retornado deve incluir os valores do cliente relacionado.
  • /pedidos/clientes/:id
    Esta rota deve mostrar os dados do pedido de acordo com o id do cliente fornecido. O pedido retornado deve incluir os valores do produto relacionado.

Depende de: BE-18

[SPT-2] Criar implementação de mensagem de erro de resposta

No backend, nas tentativas de executar queries do banco de dados utilizamos try-catch, porém o código de status 500 não é o mais preciso para as diversas situações que podem acontecer. Trate o objeto err no catch para responder ao cliente com mensagens e códigos de status mais preciso sobre o erro ocorrido (todas as rotas com try-catch devem ter esse tratamento). As respostas de erro devem ter:

  • Código de status;
  • Mensagem em português sobre o erro ocorrido;
  • Timestamp da requisição;
  • Rota em que ocorreu o erro.

O desenvolvedor deve dar manutenção periódica a esta task para garantir ao final que o tratamento é consistente.

[BE-1] Criar model de Produto

Crie um novo model para a aplicação backend, ele representa um produto e possui as seguintes colunas:

  • nome (obrigatório)
  • preço (obrigatório)
  • descricao (obrigatório, 150 caracteres)
  • desconto (obrigatório)
  • dataDesconto (obrigatório)
  • categoria (obrigatório)

[BE-2] Criar recurso GET para listagem de Produtos

Crie duas rotas GET para listagem de produtos.

  • /produtos
    Esta rota deve listar todos os produtos. Caso seja enviado na rota uma query como /produtos?nome= ou /produtos?categoria=, os dados devem ser fitrados para que apareçam apenas produtos de acordo com a busca.
  • /produtos/:id
    Esta rota deve mostrar os dados do produto de acordo com o id fornecido.

Depende de: BE-1

[BE-18] Criar model de Pedido

Crie um novo model para a aplicação backend. Suas colunas são:

  • codigo (chave primária, deve ser um UID);
  • quantidade (obrigatório);

O relacionamento entre Cliente-Pedido é 1:N. O relacionamento entre Produto-Pedido é 1:N.

Dica:

[SPT-11] Triggers de banco de dados MySQL

Implemente triggers do MySQL capazes de realizar backup de todas as tabelas do sistema, sempre que é feito alguma remoção de dados de alguma tabela.

O desenvolvedor deve dar manutenção periódica a esta task para garantir ao final que ela é consistente.

[BE-4] Criar recurso PUT para atualização de Produtos

Crie uma rota PUT para atualizar produtos existentes.

  • /produtos/:id
    Todos os dados vindos do body devem ser checados para garantir que dados inválidos não entrem no banco de dados. Exemplo:
    • Checar se a categoria é uma das predefinidas (Higiene, Brinquedos, Conforto);
    • Se a data de desconto é futura;
    • Se o desconto está entre 0 e 100 (percentual);
    • Etc.

Depende de: BE-1

[BE-20] Criar recurso POST para inserção de Pedidos

Crie uma rota POST para inserir múltiplos pedidos.

  • /pedidos
    A requisição deve receber em seu corpo um vetor de pedidos, que devem ser inseridos.
    Todos os campos do Body devem ser checados e validados antes de realizar inserção.

Depende de: BE-18

Dica: bulkCreate

[SPT-4] Criar esquema de popular banco de dados com dados fictícios

Crie uma variável de ambiente DB_FORCE que pode ser true ou false. Use ela para configurar o sync force do sequelize, e caso seja true, use um esquema para preencher o banco com dados fictícios. Devem haver:

  • 2 clientes;
  • 3 pets (dois do primeiro cliente e um do segundo);
  • Caso haja outras entidades no projeto, cuidar para que elas também sejam populadas;

O desenvolvedor deve dar manutenção periódica a esta task para garantir ao final que o tratamento é consistente.

[BE-3] Criar recurso POST para inserção de Produtos

Crie uma rota POST para inserir novos produtos.

  • /produtos
    Todos os dados vindos do body devem ser checados para garantir que dados inválidos não entrem no banco de dados. Exemplo:
    • Checar se a categoria é uma das predefinidas (Higiene, Brinquedos, Conforto);
    • Se a data de desconto é futura;
    • Se o desconto está entre 0 e 100 (percentual);
    • Etc.

Depende de: BE-1

[SPT-3] Criar esquemas de validação do corpo da requisição

Validar com uso da biblioteca Joi os corpos de requisição das rotas da aplicação para impedir que dados inválidos sejam inseridos no banco de dados. Aplicar validação em todas as inserções e atualizações de dados, responder ao cliente com 400 em caso de dados fornecidos inválidos. É necessário que as mensagens de erro sejam traduzidas para o português usando a configuração messages da função validate e que o error.details seja tratado para mostrar apenas um array com as mensagens de erro.

O desenvolvedor deve dar manutenção periódica a esta task para garantir ao final que o tratamento é consistente.

[BE-22] Criar recurso DELETE para remoção de Produtos

Crie três rotas DELETE para remover pedidos.

  • /pedidos/:id
    Remova o pedido com o respectivo id.
  • /pedidos/clientes/:id
    Remova todos os pedidos pelo respectivo id do cliente.
  • /pedidos/produtos/:id
    Remova todos os pedidos pelo respectivo id do produto.

Depende de: BE-18

[BE-9] Criar model de junção Pet-Serviço (Agendamento)

Este model deve ser implementado após o model de Serviço para complementar. Pode nomear este model de junção como Agendamento. Além dos campos de chave estrangeira, deve haver:

  • dataAgendada (data prevista para realizar o serviço);
  • realizada (booleano);

Depende de: BE-8.

Dica: Veja a seção Implementation da documentação.

[BE-10] Criar recurso GET para listagem de Serviços

Crie duas rotas GET para listagem de serviços.

  • /servicos
    Esta rota deve listar todos os serviços. Também deve aceitar uma query que filtra por status ou data
  • /servicos/:id
    Esta rota deve mostrar os dados do serviço de acordo com o id fornecido.

Depende de: BE-8

[BE-8] Criar model de Serviço

Crie um novo model para a aplicação backend. Suas colunas são:

  • nome (obrigatório);
  • preço (obrigatório);

O relacionamento entre Pet-Serviço é N:N. Deve ser implementado um segundo model que representa a tabela junção (Agendamento) entre as duas entidades.

Dica: Veja a seção Implementation da documentação.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.