feat: backend core - auth, user, role, permission, device, webhook, monitoring, cache, repository, service, middleware, API handlers
This commit is contained in:
99
internal/repository/theme.go
Normal file
99
internal/repository/theme.go
Normal file
@@ -0,0 +1,99 @@
|
||||
package repository
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"gorm.io/gorm"
|
||||
|
||||
"github.com/user-management-system/internal/domain"
|
||||
)
|
||||
|
||||
// ThemeConfigRepository 主题配置数据访问层
|
||||
type ThemeConfigRepository struct {
|
||||
db *gorm.DB
|
||||
}
|
||||
|
||||
// NewThemeConfigRepository 创建主题配置数据访问层
|
||||
func NewThemeConfigRepository(db *gorm.DB) *ThemeConfigRepository {
|
||||
return &ThemeConfigRepository{db: db}
|
||||
}
|
||||
|
||||
// Create 创建主题配置
|
||||
func (r *ThemeConfigRepository) Create(ctx context.Context, theme *domain.ThemeConfig) error {
|
||||
return r.db.WithContext(ctx).Create(theme).Error
|
||||
}
|
||||
|
||||
// Update 更新主题配置
|
||||
func (r *ThemeConfigRepository) Update(ctx context.Context, theme *domain.ThemeConfig) error {
|
||||
return r.db.WithContext(ctx).Save(theme).Error
|
||||
}
|
||||
|
||||
// Delete 删除主题配置
|
||||
func (r *ThemeConfigRepository) Delete(ctx context.Context, id int64) error {
|
||||
return r.db.WithContext(ctx).Delete(&domain.ThemeConfig{}, id).Error
|
||||
}
|
||||
|
||||
// GetByID 根据ID获取主题配置
|
||||
func (r *ThemeConfigRepository) GetByID(ctx context.Context, id int64) (*domain.ThemeConfig, error) {
|
||||
var theme domain.ThemeConfig
|
||||
err := r.db.WithContext(ctx).First(&theme, id).Error
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &theme, nil
|
||||
}
|
||||
|
||||
// GetByName 根据名称获取主题配置
|
||||
func (r *ThemeConfigRepository) GetByName(ctx context.Context, name string) (*domain.ThemeConfig, error) {
|
||||
var theme domain.ThemeConfig
|
||||
err := r.db.WithContext(ctx).Where("name = ?", name).First(&theme).Error
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &theme, nil
|
||||
}
|
||||
|
||||
// GetDefault 获取默认主题
|
||||
func (r *ThemeConfigRepository) GetDefault(ctx context.Context) (*domain.ThemeConfig, error) {
|
||||
var theme domain.ThemeConfig
|
||||
err := r.db.WithContext(ctx).Where("is_default = ?", true).First(&theme).Error
|
||||
if err != nil {
|
||||
// 如果没有默认主题,返回默认配置
|
||||
if err == gorm.ErrRecordNotFound {
|
||||
return domain.DefaultThemeConfig(), nil
|
||||
}
|
||||
return nil, err
|
||||
}
|
||||
return &theme, nil
|
||||
}
|
||||
|
||||
// List 获取所有已启用的主题配置
|
||||
func (r *ThemeConfigRepository) List(ctx context.Context) ([]*domain.ThemeConfig, error) {
|
||||
var themes []*domain.ThemeConfig
|
||||
err := r.db.WithContext(ctx).Where("enabled = ?", true).Order("is_default DESC, id ASC").Find(&themes).Error
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return themes, nil
|
||||
}
|
||||
|
||||
// ListAll 获取所有主题配置
|
||||
func (r *ThemeConfigRepository) ListAll(ctx context.Context) ([]*domain.ThemeConfig, error) {
|
||||
var themes []*domain.ThemeConfig
|
||||
err := r.db.WithContext(ctx).Order("is_default DESC, id ASC").Find(&themes).Error
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return themes, nil
|
||||
}
|
||||
|
||||
// SetDefault 设置默认主题
|
||||
func (r *ThemeConfigRepository) SetDefault(ctx context.Context, id int64) error {
|
||||
// 先清除所有默认标记
|
||||
if err := r.db.WithContext(ctx).Model(&domain.ThemeConfig{}).Where("is_default = ?", true).Update("is_default", false).Error; err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// 设置新的默认主题
|
||||
return r.db.WithContext(ctx).Model(&domain.ThemeConfig{}).Where("id = ?", id).Update("is_default", true).Error
|
||||
}
|
||||
Reference in New Issue
Block a user