blob: 9736feb3cb028c085bd592467d6c55de0ee16809 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
package database
import (
"imageboard/config"
"imageboard/models"
)
func GetPosts(limit int, ratings []config.Rating, tags []string) ([]models.Image, error) {
var posts []models.Image
query := DB.Preload("Sizes").Preload("Uploader").Limit(limit).Order("created_at DESC")
if len(ratings) > 0 {
query = query.Where("rating IN ?", ratings)
}
if len(tags) > 0 {
query = query.Joins("JOIN image_tags ON images.id = image_tags.image_id").
Joins("JOIN tags ON image_tags.tag_id = tags.id").
Where("tags.name IN ?", tags).
Group("images.id").
Preload("Tags")
} else {
query = query.Preload("Tags")
}
if err := query.Find(&posts).Error; err != nil {
return nil, err
}
return posts, nil
}
func GetPostByID(postID uint) (*models.Image, error) {
var post models.Image
if err := DB.Preload("Sizes").Preload("Uploader").Preload("Approver").Preload("Tags").First(&post, postID).Error; err != nil {
return nil, err
}
return &post, nil
}
|