feat: optional include_inactive for sub-module lessons list
GET .../sub-modules/:id/lessons?include_inactive=true returns all lessons; default remains active-only. Made-with: Cursor
This commit is contained in:
parent
3e54b5039d
commit
bbd919ca12
|
|
@ -89,6 +89,12 @@ WHERE sub_module_id = $1
|
|||
AND is_active = TRUE
|
||||
ORDER BY display_order ASC, id ASC;
|
||||
|
||||
-- name: GetSubModuleLessonsAll :many
|
||||
SELECT *
|
||||
FROM sub_module_lessons
|
||||
WHERE sub_module_id = $1
|
||||
ORDER BY display_order ASC, id ASC;
|
||||
|
||||
-- name: GetSubModuleLessonByID :one
|
||||
SELECT *
|
||||
FROM sub_module_lessons
|
||||
|
|
|
|||
|
|
@ -1469,6 +1469,46 @@ func (q *Queries) GetSubModuleLessons(ctx context.Context, subModuleID int64) ([
|
|||
return items, nil
|
||||
}
|
||||
|
||||
const GetSubModuleLessonsAll = `-- name: GetSubModuleLessonsAll :many
|
||||
SELECT id, sub_module_id, display_order, is_active, created_at, title, description, thumbnail, teaching_text, teaching_image_url, teaching_audio_url, teaching_video_url
|
||||
FROM sub_module_lessons
|
||||
WHERE sub_module_id = $1
|
||||
ORDER BY display_order ASC, id ASC
|
||||
`
|
||||
|
||||
func (q *Queries) GetSubModuleLessonsAll(ctx context.Context, subModuleID int64) ([]SubModuleLesson, error) {
|
||||
rows, err := q.db.Query(ctx, GetSubModuleLessonsAll, subModuleID)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer rows.Close()
|
||||
var items []SubModuleLesson
|
||||
for rows.Next() {
|
||||
var i SubModuleLesson
|
||||
if err := rows.Scan(
|
||||
&i.ID,
|
||||
&i.SubModuleID,
|
||||
&i.DisplayOrder,
|
||||
&i.IsActive,
|
||||
&i.CreatedAt,
|
||||
&i.Title,
|
||||
&i.Description,
|
||||
&i.Thumbnail,
|
||||
&i.TeachingText,
|
||||
&i.TeachingImageUrl,
|
||||
&i.TeachingAudioUrl,
|
||||
&i.TeachingVideoUrl,
|
||||
); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
items = append(items, i)
|
||||
}
|
||||
if err := rows.Err(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return items, nil
|
||||
}
|
||||
|
||||
const GetSubModulePracticeByID = `-- name: GetSubModulePracticeByID :one
|
||||
SELECT
|
||||
smp.id,
|
||||
|
|
|
|||
|
|
@ -1817,11 +1817,12 @@ func (h *Handler) CreateSubModuleLesson(c *fiber.Ctx) error {
|
|||
|
||||
// GetSubModuleLessons godoc
|
||||
// @Summary Get lessons under sub-module
|
||||
// @Description Returns all active lessons for a sub-module (teaching content metadata)
|
||||
// @Description Returns lessons for a sub-module. By default only active lessons; pass include_inactive=true to include inactive rows (e.g. admin / CMS).
|
||||
// @Tags course-management
|
||||
// @Accept json
|
||||
// @Produce json
|
||||
// @Param subModuleId path int true "Sub-module ID"
|
||||
// @Param include_inactive query bool false "Include inactive lessons"
|
||||
// @Success 200 {object} domain.Response
|
||||
// @Failure 400 {object} domain.ErrorResponse
|
||||
// @Failure 500 {object} domain.ErrorResponse
|
||||
|
|
@ -1835,7 +1836,12 @@ func (h *Handler) GetSubModuleLessons(c *fiber.Ctx) error {
|
|||
})
|
||||
}
|
||||
|
||||
lessons, err := h.analyticsDB.GetSubModuleLessons(c.Context(), subModuleID)
|
||||
var lessons []dbgen.SubModuleLesson
|
||||
if c.QueryBool("include_inactive", false) {
|
||||
lessons, err = h.analyticsDB.GetSubModuleLessonsAll(c.Context(), subModuleID)
|
||||
} else {
|
||||
lessons, err = h.analyticsDB.GetSubModuleLessons(c.Context(), subModuleID)
|
||||
}
|
||||
if err != nil {
|
||||
return c.Status(fiber.StatusInternalServerError).JSON(domain.ErrorResponse{
|
||||
Message: "Failed to get sub-module lessons",
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user