Projeto feito para o curso Web Full Stack da Labenu, onde teve como proposta fazer um sistema de gerenciamento de dados para a escola Labenu, que inclui informações sobre turmas, estudantes, docentes e especialidades. Ele é construído usando TypeScript, Express.js e MySQL.
- src
- controllers
- models
- routes
- database
- index.ts
- Clone este repositório em sua máquina local.
- Instale as dependências usando o comando
npm install. - Configure o arquivo
.envcom as variáveis de ambiente necessárias para a conexão com o banco de dados.
Os modelos definem as estruturas de dados usadas no sistema:
criaTurmaInput.ts: Define a estrutura para criar uma nova turma.criaEstudanteInput.ts: Define a estrutura para criar um novo estudante.criaDocenteInput.ts: Define a estrutura para criar um novo docente.
Os controladores são responsáveis por tratar as requisições HTTP:
turmaController.ts: Controlador para lidar com operações relacionadas a turmas.estudanteController.ts: Controlador para lidar com operações relacionadas a estudantes.docenteController.ts: Controlador para lidar com operações relacionadas a docentes.
As rotas definem os endpoints da API:
turmaRoutes.ts: Define as rotas para operações de turmas.estudanteRoutes.ts: Define as rotas para operações de estudantes.docenteRoutes.ts: Define as rotas para operações de docentes.
connection.ts: Define a configuração e a criação da conexão com o banco de dados MySQL usando a biblioteca Knex.
- Execute o comando
npm startpara iniciar o servidor. O servidor estará disponível emhttp://localhost:3003.
POST /turma: Cria uma nova turma.POST /estudante: Cria um novo estudante e associa passatempos.PUT /estudante: Atualiza a turma de um estudante.GET /estudante/:id: Retorna informações sobre um estudante.POST /docente: Cria um novo docente e associa especialidades.PUT /docente: Atualiza a turma de um docente.
Criar uma Nova Turma
POST http://localhost:3003/turma
Content-Type: application/json
{
"id": 5,
"nome": "tang",
"data_inicio": "2020-02-10",
"data_fim": "2020-08-10",
"tipo": "noturno"
}Criar um Novo Estudante
POST http://localhost:3003/estudante
Content-Type: application/json
{
"id": 1,
"nome": "Caio Fernandes",
"email": "caiofernandes@email.com",
"data_nasc": "1997-07-10",
"hobbies": ["Ver filme", "Cuidar do Lupin", "Aprontar"],
"turma_id": 5
}Criar um Novo Docente
POST http://localhost:3003/docente
Content-Type: application/json
{
"id": 1,
"nome": "José da Silva",
"email": "josedasilva@email.com",
"data_nasc": "1994-02-24",
"especialidades": ["CSS", "REACT", "REDUX"],
"turma_id": 5
}Colocar/Alterar Aluno em Determinada Turma
PUT http://localhost:3003/estudante
Content-Type: application/json
{
"estudante_id": 1,
"turma_id": 4
}Colocar/Alterar Docente em Determinada Turma
PUT http://localhost:3003/docente
Content-Type: application/json
{
"docente_id": 1,
"turma_id": 4
}Buscar Aluno com Base no ID
GET http://localhost:3003/estudante/1Esta documentação oferece uma visão geral do projeto e de suas principais funcionalidades. Certifique-se de explorar os arquivos individuais e as rotas definidas nos controladores para obter detalhes mais específicos sobre as operações disponíveis.