Olá, pessoal!
Implementei a funcionalidade na nossa API, que permite contar o número de cursos em que um estudante está matriculado. Essa adição foi feita no MatriculaController, MatriculaServices e pessoasRoute, agora obtemos a contagem de forma simples e eficiente.
Arquivo MatriculaController.js :
// Método para contar cursos por ID do estudante
async contaCursosPorEstudante(req, res) {
const { estudante_id } = req.params; // Obtém o ID do estudante da requisição
try {
// Busca os dados do estudante e conta os cursos simultaneamente
const [dadosEstudante, contagem] = await Promise.all([
this.entidadeService.pegaUmRegistro({ id: estudante_id }),
this.entidadeService.contaCursosPorEstudante(estudante_id),
]);
// Verifica se o estudante existe
if (!dadosEstudante) {
return res.status(404).json({ mensagem: 'Estudante não encontrado' });
}
// Retorna a contagem e os dados do estudante
return res.status(200).json({ contagem, estudante: dadosEstudante });
} catch (error) {
return res.status(500).json({ mensagem: 'Erro ao buscar dados' });
}
}
O método contaCursosPorEstudante é responsável por contar o número de cursos nos quais um estudante está matriculado, utilizando seu ID.
Resumo do Método contaCursosPorEstudante:
Entrada:
- Recebe o ID do estudante através dos parâmetros da requisição.
Processo:
Faz uma chamada simultânea para dois serviços: Busca os dados do estudante com o método pegaUmRegistro; Conta as matrículas do estudante utilizando o método contaCursosPorEstudante.
Verifica se o estudante existe. Se não, retorna um erro 404 (não encontrado).
Saída:
- Retorna um JSON contendo: A contagem de cursos nos quais o estudante está matriculado; Os dados do estudante.
Tratamento de Erros:
- Se ocorrer algum erro durante o processo, retorna um erro 500 (erro interno do servidor).
Arquivo MatriculaServices.js :
// Método para contar cursos por ID do estudante
async contaCursosPorEstudante(estudante_id) {
// Utiliza o Sequelize para contar as matrículas do estudante
const total = await this.model.count({
where: {
estudante_id,
status: 'matriculado' // Considerando apenas matrículas com status 'matriculado'
}
});
return total; // Retorna a contagem
}
Resumo do Método contaCursosPorEstudante no Arquivo MatriculaServices.js:
Objetivo: Este método conta quantas matrículas um estudante possui no sistema com o status de 'matriculado'.
Entrada: Recebe o estudante_id como parâmetro, que representa o ID do estudante cujas matrículas serão contadas.
Processo: Utiliza o Sequelize para realizar uma contagem de registros na tabela de matrículas (this.model.count); Aplica um filtro (where) que considera apenas as matrículas que pertencem ao estudante identificado pelo estudante_id e que estão com o status 'matriculado'.
Saída: Retorna um valor numérico (total), que representa o número total de matrículas ativas do estudante.
Este método é eficiente para obter rapidamente a quantidade de cursos em que um estudante está ativo, permitindo a implementação de funcionalidades que dependem dessa informação.
URLs para Teste no Postman:
Contar Cursos por Estudante: http://localhost:3000/pessoas/1/matriculas/contagem