appidea-restapi/routers/api/v1/picture/picture.go

68 lines
1.5 KiB
Go

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)
}