From 8b059822735356915e6b81b473e387f9138b2518 Mon Sep 17 00:00:00 2001 From: alex Date: Sun, 15 Sep 2024 00:26:07 +0200 Subject: [PATCH] questions count --- modules/structs/lessons.go | 13 +++++++------ routers/router/api/v1/lessons/lessons.go | 14 ++++++++++++++ routers/router/api/v1/organization/roles.go | 1 + 3 files changed, 22 insertions(+), 6 deletions(-) diff --git a/modules/structs/lessons.go b/modules/structs/lessons.go index f24183c..8ee9aa8 100644 --- a/modules/structs/lessons.go +++ b/modules/structs/lessons.go @@ -9,12 +9,13 @@ const ( // swagger:model LessonResponse type LessonResponse struct { - Id string - State uint8 - Title string - ThumbnailUrl string - CreatorUserId string - CreatedAt time.Time + Id string + State uint8 + Title string + ThumbnailUrl string + QuestionsCount int `gorm:"-"` + CreatorUserId string + CreatedAt time.Time } // swagger:model CreateLessonResponse diff --git a/routers/router/api/v1/lessons/lessons.go b/routers/router/api/v1/lessons/lessons.go index 558c655..79c1b12 100644 --- a/routers/router/api/v1/lessons/lessons.go +++ b/routers/router/api/v1/lessons/lessons.go @@ -41,6 +41,20 @@ func GetLessons(c *fiber.Ctx) error { return c.SendStatus(fiber.StatusInternalServerError) } + // get all questions for each lesson + + for i, lesson := range lessons { + var questionsCount int64 + + if err := database.DB.Model(&models.Question{}). + Where("lesson_id = ?", lesson.Id). + Count(&questionsCount).Error; err != nil { + return c.SendStatus(fiber.StatusInternalServerError) + } + + lessons[i].QuestionsCount = int(questionsCount) + } + return c.JSON(lessons) } diff --git a/routers/router/api/v1/organization/roles.go b/routers/router/api/v1/organization/roles.go index fa243de..0bd09bd 100644 --- a/routers/router/api/v1/organization/roles.go +++ b/routers/router/api/v1/organization/roles.go @@ -66,6 +66,7 @@ func GetRoles(c *fiber.Ctx) error { var users []structs.HelperRoleUser if err := database.DB.Model(&models.User{}). + Select("first_name", "last_name", "profile_picture_url"). Where("role_id = ? AND organization_id = ?", key, c.Locals("organizationId").(string)). Find(&users).Error; err != nil { return c.SendStatus(fiber.StatusInternalServerError)