Skip to content

ClassConnect-org/forum-microservice

Repository files navigation

forum-microservice

codecov

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.

Descripcion

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.

Endpoints

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)

Estructura

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).

Despliegue

  1. Se hace feature branching desde la rama dev.
  2. Una vez listo para integrar se realiza PR a dev, donde corre el pipeline de testing y coverage.
  3. Una vez esta listo para desplegar se realiza PR a main, se vuelven a correr pipelines de calidad de codigo.
  4. Cuando se hace el push a main se ejecuta el pipeline de continous delivery, construye la imagen y la desplega a k8s.

About

Forum chat microservice for the Class-Connect project

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •