package picture import ( "git.umbach.dev/app-idea/rest-api/modules/config" "git.umbach.dev/app-idea/rest-api/modules/database" "git.umbach.dev/app-idea/rest-api/modules/structs" "git.umbach.dev/app-idea/rest-api/routers/api/v1/user" "github.com/gofiber/fiber/v2" ) func GetPictures(c *fiber.Ctx) error { db := database.DB pictures := []structs.Picture{} db.Find(&pictures) pic := []structs.APIPictureList{} var picUser structs.User var avatarUrl string user, err := user.GetUserBySessionId(c.Query(config.Cfg.Settings.Cookies.SessionId)) if err != nil { return c.SendStatus(fiber.StatusInternalServerError) } for i := 0; i < len(pictures); i++ { picture := pictures[i] if picUser.Id != picture.UserId { picUser = structs.User{Id: picture.UserId} db.Select("avatar_url").First(&picUser) avatarUrl = picUser.AvatarUrl } var count int64 db.Model(&structs.PictureLike{}).Where("user_id = ?", user.Id).Where("picture_id = ?", picture.PictureId).Count(&count) pic = append(pic, structs.APIPictureList{ UserId: picture.UserId, PictureId: picture.PictureId, Url: picture.Url, Likes: picture.Likes, Location: picture.Location, Description: picture.Description, Liked: int(count), AvatarUrl: avatarUrl, CreatedAt: picture.CreatedAt}) } return c.JSON(pic) } func GetPicturesByUserId(c *fiber.Ctx) error { db := database.DB pictures := []structs.APIPicture{} db.Model(structs.Picture{}).Where("user_id", c.Params("id")).Find(&pictures) return c.JSON(pictures) }