🎨 Refactoring the extension service and the keybinding service

This commit is contained in:
2025-07-07 13:19:59 +08:00
parent 7c2318a13f
commit 7fcfc5e992
14 changed files with 680 additions and 506 deletions

View File

@@ -44,7 +44,7 @@ type Migratable interface {
// ConfigMigrationService 配置迁移服务
type ConfigMigrationService[T Migratable] struct {
logger *log.LoggerService
pathManager *PathManager
configDir string
configName string
targetVersion string
configPath string
@@ -60,12 +60,12 @@ type MigrationResult struct {
// NewConfigMigrationService 创建配置迁移服务
func NewConfigMigrationService[T Migratable](
logger *log.LoggerService,
pathManager *PathManager,
configDir string,
configName, targetVersion, configPath string,
) *ConfigMigrationService[T] {
return &ConfigMigrationService[T]{
logger: orDefault(logger, log.New()),
pathManager: orDefault(pathManager, NewPathManager()),
configDir: configDir,
configName: configName,
targetVersion: targetVersion,
configPath: configPath,
@@ -138,7 +138,7 @@ func (cms *ConfigMigrationService[T]) createBackupOptimized() (string, error) {
return "", nil
}
configDir := cms.pathManager.GetConfigDir()
configDir := cms.configDir
timestamp := time.Now().Format("20060102150405")
newBackupPath := filepath.Join(configDir, fmt.Sprintf(BackupFilePattern, cms.configName, timestamp))
@@ -172,7 +172,7 @@ func (cms *ConfigMigrationService[T]) tryQuickRecovery(existingConfig *koanf.Koa
// findLatestBackupQuick 快速查找最新备份(优化排序)
func (cms *ConfigMigrationService[T]) findLatestBackupQuick() string {
pattern := filepath.Join(cms.pathManager.GetConfigDir(), fmt.Sprintf("%s.backup.*.json", cms.configName))
pattern := filepath.Join(cms.configDir, fmt.Sprintf("%s.backup.*.json", cms.configName))
matches, err := filepath.Glob(pattern)
if err != nil || len(matches) == 0 {
return ""
@@ -317,18 +317,18 @@ func chainLoad(k *koanf.Koanf, loaders ...func() error) error {
}
// 工厂函数
func NewAppConfigMigrationService(logger *log.LoggerService, pathManager *PathManager) *ConfigMigrationService[*models.AppConfig] {
func NewAppConfigMigrationService(logger *log.LoggerService, configDir, settingsPath string) *ConfigMigrationService[*models.AppConfig] {
return NewConfigMigrationService[*models.AppConfig](
logger, pathManager, "settings", CurrentAppConfigVersion, pathManager.GetSettingsPath())
logger, configDir, "settings", CurrentAppConfigVersion, settingsPath)
}
func NewKeyBindingMigrationService(logger *log.LoggerService, pathManager *PathManager) *ConfigMigrationService[*models.KeyBindingConfig] {
func NewKeyBindingMigrationService(logger *log.LoggerService, configDir, keybindsPath string) *ConfigMigrationService[*models.KeyBindingConfig] {
return NewConfigMigrationService[*models.KeyBindingConfig](
logger, pathManager, "keybindings", CurrentKeyBindingConfigVersion, pathManager.GetKeybindsPath())
logger, configDir, "keybindings", CurrentKeyBindingConfigVersion, keybindsPath)
}
// NewExtensionMigrationService 创建扩展配置迁移服务
func NewExtensionMigrationService(logger *log.LoggerService, pathManager *PathManager) *ConfigMigrationService[*models.ExtensionSettings] {
func NewExtensionMigrationService(logger *log.LoggerService, configDir, extensionsPath string) *ConfigMigrationService[*models.ExtensionSettings] {
return NewConfigMigrationService[*models.ExtensionSettings](
logger, pathManager, "extensions", CurrentExtensionConfigVersion, pathManager.GetExtensionsPath())
logger, configDir, "extensions", CurrentExtensionConfigVersion, extensionsPath)
}