diff options
Diffstat (limited to 'database')
| -rw-r--r-- | database/comments.go | 11 | ||||
| -rw-r--r-- | database/images.go | 34 | ||||
| -rw-r--r-- | database/tags.go | 23 |
3 files changed, 68 insertions, 0 deletions
diff --git a/database/comments.go b/database/comments.go new file mode 100644 index 0000000..1203be4 --- /dev/null +++ b/database/comments.go @@ -0,0 +1,11 @@ +package database + +import ( + "imageboard/models" +) + +func GetTotalCommentsCount() (int64, error) { + var count int64 + err := DB.Model(&models.Comment{}).Count(&count).Error + return count, err +} diff --git a/database/images.go b/database/images.go new file mode 100644 index 0000000..8fa1a47 --- /dev/null +++ b/database/images.go @@ -0,0 +1,34 @@ +package database + +import ( + "imageboard/models" + "imageboard/utils/format" + "time" +) + +func GetTotalPostsCount() (int64, error) { + var count int64 + err := DB.Model(&models.Image{}).Count(&count).Error + return count, err +} + +func GetTodayPostsCount() (int64, error) { + var count int64 + today := time.Now().Truncate(24 * time.Hour) + err := DB.Model(&models.Image{}).Where("created_at >= ?", today).Count(&count).Error + return count, err +} + +func GetTotalStorageSize() (string, error) { + var imageSizes []models.ImageSize + if err := DB.Select("file_size").Find(&imageSizes).Error; err != nil { + return "0 B", err + } + + var totalSize int64 + for _, size := range imageSizes { + totalSize += size.FileSize + } + + return format.FileSize(totalSize), nil +} diff --git a/database/tags.go b/database/tags.go new file mode 100644 index 0000000..199087a --- /dev/null +++ b/database/tags.go @@ -0,0 +1,23 @@ +package database + +import ( + "imageboard/models" +) + +func GetTotalTagsCount() (int64, error) { + var count int64 + err := DB.Model(&models.Tag{}).Where("is_deleted = ?", false).Count(&count).Error + return count, err +} + +func GetPopularTags(limit int) ([]models.Tag, error) { + var tags []models.Tag + err := DB.Where("is_deleted = ?", false).Order("count DESC").Limit(limit).Find(&tags).Error + return tags, err +} + +func GetRecentTags(limit int) ([]models.Tag, error) { + var tags []models.Tag + err := DB.Where("is_deleted = ?", false).Order("created_at DESC").Limit(limit).Find(&tags).Error + return tags, err +} |
