package repositories import ( "database/sql" "log" "github.com/niangaodev/art-code/config" "github.com/niangaodev/art-code/models" ) // GetSettings 获取所有系统配置 func GetSettings() ([]models.Setting, error) { query := "SELECT id, key_name, value, description, created_at, updated_at FROM settings ORDER BY key_name" rows, err := config.DB.Query(query) if err != nil { log.Printf("Error querying settings: %v", err) return nil, err } defer rows.Close() var settings []models.Setting for rows.Next() { var setting models.Setting if err := rows.Scan( &setting.ID, &setting.KeyName, &setting.Value, &setting.Description, &setting.CreatedAt, &setting.UpdatedAt, ); err != nil { log.Printf("Error scanning setting: %v", err) continue } settings = append(settings, setting) } return settings, nil } // GetSettingByKey 根据键名获取系统配置 func GetSettingByKey(keyName string) (*models.Setting, error) { query := "SELECT id, key_name, value, description, created_at, updated_at FROM settings WHERE key_name = ?" row := config.DB.QueryRow(query, keyName) var setting models.Setting if err := row.Scan( &setting.ID, &setting.KeyName, &setting.Value, &setting.Description, &setting.CreatedAt, &setting.UpdatedAt, ); err != nil { if err == sql.ErrNoRows { return nil, nil } log.Printf("Error scanning setting by key: %v", err) return nil, err } return &setting, nil } // UpdateSetting 更新系统配置 func UpdateSetting(setting *models.Setting) error { query := ` UPDATE settings SET value = ?, description = ?, updated_at = NOW() WHERE key_name = ? ` _, err := config.DB.Exec( query, setting.Value, setting.Description, setting.KeyName, ) if err != nil { log.Printf("Error updating setting: %v", err) return err } return nil } // CreateSetting 创建系统配置 func CreateSetting(setting *models.Setting) error { query := ` INSERT INTO settings (key_name, value, description, created_at, updated_at) VALUES (?, ?, ?, NOW(), NOW()) ` result, err := config.DB.Exec( query, setting.KeyName, setting.Value, setting.Description, ) if err != nil { log.Printf("Error creating setting: %v", err) return err } // 获取自增ID id, err := result.LastInsertId() if err != nil { log.Printf("Error getting last insert ID: %v", err) return err } setting.ID = uint(id) return nil } // DeleteSetting 删除系统配置 func DeleteSetting(keyName string) error { query := "DELETE FROM settings WHERE key_name = ?" _, err := config.DB.Exec(query, keyName) if err != nil { log.Printf("Error deleting setting: %v", err) return err } return nil } // BuildSettingResponse 构建系统配置响应 func BuildSettingResponse(setting *models.Setting) *models.SettingResponse { return &models.SettingResponse{ ID: setting.ID, KeyName: setting.KeyName, Value: setting.Value, Description: setting.Description, CreatedAt: setting.CreatedAt.Format("2006-01-02 15:04:05"), UpdatedAt: setting.UpdatedAt.Format("2006-01-02 15:04:05"), } } // BuildSettingsResponse 构建系统配置列表响应 func BuildSettingsResponse(settings []models.Setting) []models.SettingResponse { var responses []models.SettingResponse for _, setting := range settings { responses = append(responses, *BuildSettingResponse(&setting)) } return responses }