Compare commits
No commits in common. "b1a1b97a0aa648b63a86ca8e7008c1145d121163" and "facaedb8dcb96e754e2861bad67a7b5da2a32bb6" have entirely different histories.
b1a1b97a0a
...
facaedb8dc
|
|
@ -18,11 +18,6 @@ type createCourseSubCategoryReq struct {
|
|||
IsActive *bool `json:"is_active"`
|
||||
}
|
||||
|
||||
type createCourseCategoryReq struct {
|
||||
Name string `json:"name"`
|
||||
IsActive *bool `json:"is_active"`
|
||||
}
|
||||
|
||||
type createLevelReq struct {
|
||||
CourseID int64 `json:"course_id"`
|
||||
CEFRLevel string `json:"cefr_level"`
|
||||
|
|
@ -116,68 +111,6 @@ func intOrNil(v *int32) interface{} {
|
|||
return *v
|
||||
}
|
||||
|
||||
// ListCourseCategories godoc
|
||||
// @Summary List course categories
|
||||
// @Description Legacy-compatible endpoint for listing course categories
|
||||
// @Tags course-management
|
||||
// @Produce json
|
||||
// @Success 200 {object} domain.Response
|
||||
// @Failure 500 {object} domain.ErrorResponse
|
||||
// @Router /api/v1/course-management/categories [get]
|
||||
func (h *Handler) ListCourseCategories(c *fiber.Ctx) error {
|
||||
rows, err := h.analyticsDB.GetAllCourseCategories(c.Context(), dbgen.GetAllCourseCategoriesParams{
|
||||
Offset: pgtype.Int4{Int32: 0, Valid: true},
|
||||
Limit: pgtype.Int4{Int32: 10000, Valid: true},
|
||||
})
|
||||
if err != nil {
|
||||
return c.Status(fiber.StatusInternalServerError).JSON(domain.ErrorResponse{Message: "Failed to load categories", Error: err.Error()})
|
||||
}
|
||||
|
||||
total := 0
|
||||
if len(rows) > 0 {
|
||||
total = int(rows[0].TotalCount)
|
||||
}
|
||||
|
||||
return c.JSON(domain.Response{
|
||||
Message: "Categories retrieved successfully",
|
||||
Data: map[string]interface{}{
|
||||
"categories": rows,
|
||||
"total_count": total,
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
// CreateCourseCategory godoc
|
||||
// @Summary Create course category
|
||||
// @Description Legacy-compatible endpoint for creating a course category
|
||||
// @Tags course-management
|
||||
// @Accept json
|
||||
// @Produce json
|
||||
// @Param body body createCourseCategoryReq true "Create category payload"
|
||||
// @Success 201 {object} domain.Response
|
||||
// @Failure 400 {object} domain.ErrorResponse
|
||||
// @Failure 500 {object} domain.ErrorResponse
|
||||
// @Router /api/v1/course-management/categories [post]
|
||||
func (h *Handler) CreateCourseCategory(c *fiber.Ctx) error {
|
||||
var req createCourseCategoryReq
|
||||
if err := c.BodyParser(&req); err != nil {
|
||||
return c.Status(fiber.StatusBadRequest).JSON(domain.ErrorResponse{Message: "Invalid request body", Error: err.Error()})
|
||||
}
|
||||
if strings.TrimSpace(req.Name) == "" {
|
||||
return c.Status(fiber.StatusBadRequest).JSON(domain.ErrorResponse{Message: "name is required"})
|
||||
}
|
||||
|
||||
created, err := h.analyticsDB.CreateCourseCategory(c.Context(), dbgen.CreateCourseCategoryParams{
|
||||
Name: req.Name,
|
||||
Column2: boolOrNil(req.IsActive),
|
||||
})
|
||||
if err != nil {
|
||||
return c.Status(fiber.StatusInternalServerError).JSON(domain.ErrorResponse{Message: "Failed to create category", Error: err.Error()})
|
||||
}
|
||||
|
||||
return c.Status(fiber.StatusCreated).JSON(domain.Response{Message: "Course category created", Data: created})
|
||||
}
|
||||
|
||||
// UnifiedHierarchy godoc
|
||||
// @Summary Get unified course hierarchy
|
||||
// @Description Returns full hierarchy: category -> sub-category -> course
|
||||
|
|
|
|||
|
|
@ -79,8 +79,6 @@ func (a *App) initAppRoutes() {
|
|||
groupV1.Get("/assessment/questions/:id", h.GetAssessmentQuestionByID)
|
||||
|
||||
// Unified Course Management (single hierarchy model)
|
||||
groupV1.Get("/course-management/categories", a.authMiddleware, a.RequirePermission("learning_tree.get"), h.ListCourseCategories)
|
||||
groupV1.Post("/course-management/categories", a.authMiddleware, a.RequirePermission("course_categories.create"), h.CreateCourseCategory)
|
||||
groupV1.Get("/course-management/hierarchy", a.authMiddleware, a.RequirePermission("learning_tree.get"), h.UnifiedHierarchy)
|
||||
groupV1.Get("/course-management/courses/:courseId/hierarchy", a.authMiddleware, a.RequirePermission("learning_tree.get"), h.UnifiedHierarchyByCourse)
|
||||
groupV1.Post("/course-management/sub-categories", a.authMiddleware, a.RequirePermission("course_categories.create"), h.CreateCourseSubCategory)
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user