Este repositorio es parte del backend de la aplicacion class-connect, para conocer informacion mas general sobre el proyecto visita el siguiente link Organization Homepage.
Este microservicio es responsable de gestionar el foro de la aplicación, permitiendo a los usuarios realizar preguntas y obtener respuestas por parte de otros usuarios.
Las funcionalidades principales incluyen:
-
Crear, actualizar y eliminar preguntas y respuestas.
-
Votar positivamente o negativamente preguntas y respuestas.
-
Permitir al autor de una pregunta seleccionar una respuesta como correcta.
-
Notificar a los usuarios cuando:
-
Reciben una respuesta.
-
Reciben un voto positivo.
-
Su respuesta es seleccionada como correcta.
-
Los endpoints de este microservicio se pueden encontrar en el swagger del mismo (o alternativamente en la carpeta docs/),
los mismos son:
-
GET/swagger/index.html (Documentacion de la API) -
GET/:courseId/question (Obtener preguntas paginadas de un curso) -
POST/:courseId/question (Publicar una pregunta de un usuario al foro de un curso) -
GET/question/:questionId (Obtener una pregunta con sus respuestas) -
PUT/question/:questionId (Actualizar una pregunta) -
DELETE/question/:questionId (Borrar una pregunta) -
POST/question/:questionId/upvote (Dar un voto positivo a una pregunta) -
POST/question/:questionId/downvote (Dar un voto negativo a una pregunta) -
DELETE/question/:questionId/vote (Eliminar un voto de una pregunta) -
POST/question/:questionId/answer (Publicar una respuesta a una pregunta) -
PUT/question/:questionId/answer/:answerId (Actualizar una respuesta) -
DELETE/question/:questionId/answer/:answerId (Borrar una respuesta) -
POST/question/:questionId/answer/:answerId/upvote (Dar un voto positivo a una respuesta) -
POST/question/:questionId/answer/:answerId/downvote (Dar un voto negativo a una respuesta) -
DELETE/question/:questionId/answer/:answerId/vote (Eliminar un voto de una respuesta) -
PUT/question/:questionId/answer/:answerId/correct (Marcar una respuesta como correcta) -
DELETE/question/:questionId/answer/correct (Eliminar como correcta la respuesta de la pregunta)
Se utiliza la arquitectura package by layer, donde los controladores se pueden encontrar en la carpeta handlers, los servicios en services y los repositorios en repository.
Para cada grupo de rutas hay una interfaz para el Handler y otra para el Service, sin embargo solamente hay una interfaz repositorio (forum repository).
- Se hace feature branching desde la rama dev.
- Una vez listo para integrar se realiza PR a dev, donde corre el pipeline de testing y coverage.
- Una vez esta listo para desplegar se realiza PR a main, se vuelven a correr pipelines de calidad de codigo.
- Cuando se hace el push a main se ejecuta el pipeline de continous delivery, construye la imagen y la desplega a k8s.