/orm-com-nodejs-api-sequelize-e-mysql

Este projeto tem como finalidade aprofundar o conhecimento sobre gerenciamento de conteudos usando o padrão MVC através do Sequelize aplicado a uma API REST em NodeJS

Primary LanguageJavaScript

ORM com NodeJS com API Sequelize e MySQL

Instruções para executar o projeto

  1. Abra o terminal integrado
  2. Verifique se ele está retornando o caminho da pasta principal do projeto
  3. Execute a instalação das dependências do projeto: usando "yarn install" ou "npm install"
  4. Use o comando "yarn dev" ou "npm run dev" para inicializar a API
  5. Execute o script de criação do banco de dados pelo comando ...
  6. Execute o script para criar as migrations pelo comando "yarn db:migrate"
  7. Para criar o seeder da tabela pessoas, use o comando "yarn seed-gen-pessoa"

Uso de Rotas no Front-End

Rotas de Usuários

Métodos GET para consulta de Usuários:

  • /pessoas

    Esse método realiza uma busca e retorna um array JSON contendo uma lista de todos os usuários cadastrados.

  • /pessoas/:id

    Esse método realiza uma busca por usuário baseado no seu ID.

    Recomenda-se o uso desse método com baseando-se no array JSON obtido pelo método anterior ( /pessoas ) para o usuário que estiver consultando escolha o nome do usuário e este aponte para seu ID correspondente.

    Para implementar esse método inclua os parâmetro "name" do array JSON como dado a ser exibido na tag "datalist". Para requisitar a pesquisa, use o "ID" correspondente ao nome.

  • /pessoas/:estudanteId/matricula/:matriculaId

    Esse Método pesquisa pelos status de Matrícula, ID de estudante e ID da turma

    os valores :estudanteId e :matriculaId se referem aos IDs de estudante e maatrícula associados ao usuário, vejamos como podem ser usados:

    http://www.meusite.com/pessoas/1/matricula/4

    Para utilizá-lo, execute o mesmo procedimento recomendado no método anterior.

Métodos POST para atualizar dados de usuários:

  • /pessoas

    Esse método irá criar um usuário, sendo necessário informar em JSON:

    "nome": "foo bar",

    "email": foo@bar.com.br,

    "ativo": True,

    "role": "estudante" ou "docente"

  • /pessoas/:estudanteId/matricula

    Esse método serve para indicar a criação de matrícula para o aluno já cadastrado, sendo necessário indicar no formado JSON o status e o id da turma

Atenção!

Os métodos PUT sobrescreverão os dados salvos sobre os usuários, preste bastante atenção ao ID correspondente ao usuário, bem como o ID da matrícula, são dois dados diferentes!

Métodos PUT para atualizar cadastros:

  • /pessoas/:id
  • /pessoas/:estudanteId/matricula/:matriculaId

Métodos DELETE para deletar Usuários e/ou Matrículas:

  • /pessoas/:id
  • /pessoas/:estudanteId/matricula/:matriculaId

Rotas das Turmas

Métodos GET

  • /turmas
  • Consulta por todas as turmas

  • /turmas/:id
  • Consulta turma por seu id

Métodos POST

  • /turmas
  • Esse método cria uma nova turma e usa como parâmetros os IDs de nível e de docente no corpo da requisição

Métodos PUT

  • /turmas/:id
  • Atualiza turma pelo seu id tendo como parâmetros os ID do docente e ID do nível

Métodos DELETE

  • /turmas/:id
  • Deleta a turma correspondente ao ID

Rotas dos Niveis

Métodos GET

  • /niveis
  • Consulta por todas os niveis

  • /niveis/:id
  • Consulta o nivel por seu id

Métodos POST

  • /niveis
  • Esse método cria um novo nivel e usa como parâmetro a descrição do nível no corpo da requisição, por exemplo:

    "descr_nivel": "básico" ou "intermediário" ou "avançado"

Métodos PUT

  • /niveis/:id
  • Atualiza nivel pelo seu id tendo como parâmetro sua nova descrição

Métodos DELETE

  • /niveis/:id
  • Deleta o nivel correspondente ao ID

Sobre o projeto

O estudo de caso desse projeto se baseia num cliente fictício, uma escola de TI que deseja implementar um sistema de aulas virtuais. Para tal ela apresentou como necessidade organizar o conteúdo pedagógico distribuído de modo organizado dentro do portal que eles mantém online.

A escola informou que o controle acadêmico precisa ser feito para se aproximar da realidade da secretaria acadêmica.

Deste modo foi informado que o sistema deve ser capaz de:

  1. Cadastrar individualmente cada aula
  2. Agrupar as aulas por disciplina
  3. A disciplina deve ser acessada somente pela classe que a está cursando
  4. Cada classe deve conter os alunos que a ela pertencem
  5. O cadastro dos alunos deve ser registrado pela matricula deles
  6. As classes devem ser classificadas pelo nível
  7. Somente os professores serão capazes de postar e editar as aulas e exercícios
  8. Os professores devem conseguir pesquisar o aluno pela matrícula
  9. O resultado da busca deve retornar a matrícula e o desempenho acadêmico do aluno, bem como quais aulas ele já assistiu até o momento da pesquisa ter sido feita

O desenvolvimento desse projeto objetiva a criação de uma API RESTful usando os recursos disponibilizados pelo Sequelize.js para organizar o fluxo de cadastro, consulta, atualização e deleção de dados de um sistema escolar.

Tecnologias utilizadas

  • Git
  • Node.js
  • Yarn
  • Nodemon
  • Sequelize ORM
  • MySQL & mysql-cli
  • Postman
  • Insomnia
  • Beekeeper
  • Heroku