Skip to content

fix: Corregir el flujo de creación de cursos y la persistencia de relaciones #119

@Frasquito3

Description

@Frasquito3

Describe el Bug

El flujo para crear un nuevo curso está fundamentalmente roto y presenta múltiples errores críticos que impiden su funcionamiento. Los síntomas principales son:

  1. Persistencia Incompleta: Al crear un curso, este se guarda en su propia colección, pero su ObjectId no se añade a las colecciones courses de las entidades Professor y CourseType relacionadas.
  2. Errores de Búsqueda y Autenticación: Las peticiones a la API fallan con errores 401 Unauthorized o crashean con BSONError, porque la lógica no convierte correctamente los string IDs (del token o del body) a ObjectIds de MongoDB antes de consultar la base de datos.
  3. Errores de Validación: El endpoint POST /courses devuelve un error 400 Bad Request al recibir FormData, ya que el esquema de Valibot no está configurado para coaccionar los valores de tipo string a boolean o number.
  4. Conflicto de Rutas: La ruta GET /api/courses/my-courses es interceptada por la ruta dinámica GET /api/courses/:id, causando que el controlador incorrecto se ejecute.

Nombre de Rama Sugerido (Opcional)

fix/course-creation-persistence

Tareas Propuestas (Checklist)

  • Refactorizar el método create del CourseService para garantizar que las relaciones bidireccionales se guarden correctamente en las colecciones de Professor y CourseType.
  • Corregir todas las consultas a la base de datos en los controladores y servicios relacionados para convertir explícitamente los IDs de string a ObjectId.
  • Modificar el CreateCourseSchema de valibot para que utilice v.transform y maneje la coerción de tipos de los datos provenientes de FormData.
  • Reordenar las rutas en course.routes.ts para que las rutas específicas (/my-courses) se definan antes que las dinámicas (/:id).

Definición de 'Hecho' (Definition of Done)

  • El flujo de creación de cursos es completamente funcional y guarda todas las relaciones correctamente en la base de datos.
  • Los endpoints ya no producen errores BSONError, 400 o 401 relacionados con los problemas descritos.
  • El Pull Request asociado ha sido revisado, aprobado y fusionado.

Metadata

Metadata

Labels

bugSomething isn't working

Type

No fields configured for Bug.

Projects

Status
Done

Relationships

None yet

Development

No branches or pull requests

Issue actions