Files
nl-blogs/server/repositories/category_repository.go
2026-01-19 13:53:32 +08:00

81 lines
1.9 KiB
Go

package repositories
import (
"log"
"time"
"github.com/niangaodev/art-code/config"
"github.com/niangaodev/art-code/models"
"gorm.io/gorm"
)
// GetCategories 获取所有分类
func GetCategories() ([]models.Category, error) {
var categories []models.Category
err := config.DB.Model(&models.Category{}).
Where("deleted_at = ?", 0).
Order("sort_order ASC, created_at DESC").
Find(&categories).Error
if err != nil {
log.Printf("Error querying categories: %v", err)
return nil, err
}
return categories, nil
}
// GetCategoryByID 根据ID获取分类
func GetCategoryByID(id uint) (*models.Category, error) {
var category models.Category
err := config.DB.Model(&models.Category{}).
Where("id = ? AND deleted_at = ?", id, 0).
First(&category).Error
if err != nil {
if err == gorm.ErrRecordNotFound {
return nil, nil
}
log.Printf("Error getting category by ID: %v", err)
return nil, err
}
return &category, nil
}
// CreateCategory 创建分类
func CreateCategory(category *models.Category) error {
err := config.DB.Create(category).Error
if err != nil {
log.Printf("Error creating category: %v", err)
return err
}
return nil
}
// UpdateCategory 更新分类
func UpdateCategory(category *models.Category) error {
err := config.DB.Model(&models.Category{}).
Where("id = ? AND deleted_at = ?", category.ID, 0).
Updates(map[string]interface{}{
"name": category.Name,
"slug": category.Slug,
"description": category.Description,
"sort_order": category.SortOrder,
"updated_at": time.Now().Unix(),
}).Error
if err != nil {
log.Printf("Error updating category: %v", err)
return err
}
return nil
}
// DeleteCategory 删除分类
func DeleteCategory(id uint) error {
err := config.DB.Model(&models.Category{}).
Where("id = ?", id).
Update("deleted_at", time.Now().Unix()).Error
if err != nil {
log.Printf("Error deleting category: %v", err)
return err
}
return nil
}