From 6770f6db5b58fecaa886721484303371573761a7 Mon Sep 17 00:00:00 2001 From: andig Date: Wed, 20 Aug 2025 22:26:54 +0200 Subject: [PATCH] cli/config: don't create devices (#23130) --- cmd/config.go | 4 ++-- cmd/setup.go | 10 ++++------ cmd/setup_circuits_test.go | 7 ++----- util/config/config.go | 19 ++++++++----------- 4 files changed, 16 insertions(+), 24 deletions(-) diff --git a/cmd/config.go b/cmd/config.go index a1f12fc63..b1320cb39 100644 --- a/cmd/config.go +++ b/cmd/config.go @@ -27,8 +27,8 @@ func runConfig(cmd *cobra.Command, args []string) { log.FATAL.Fatal(err) } - // setup environment - if err := configureEnvironment(cmd, &conf); err != nil { + // setup persistence + if err := configureDatabase(conf.Database); err != nil { log.FATAL.Fatal(err) } diff --git a/cmd/setup.go b/cmd/setup.go index e7796e07b..78c3bbbde 100644 --- a/cmd/setup.go +++ b/cmd/setup.go @@ -559,12 +559,6 @@ func configureEnvironment(cmd *cobra.Command, conf *globalconfig.All) error { err = wrapErrorWithClass(ClassGo, configureGo(conf.Go)) } - // setup config database - if err == nil { - // TODO decide wrapping - err = config.Init(db.Instance) - } - return err } @@ -594,6 +588,10 @@ func configureDatabase(conf globalconfig.DB) error { return err } + if err := config.Init(); err != nil { + return err + } + persistSettings := func() { if err := settings.Persist(); err != nil { log.ERROR.Println("cannot save settings:", err) diff --git a/cmd/setup_circuits_test.go b/cmd/setup_circuits_test.go index 09b68278b..518987f24 100644 --- a/cmd/setup_circuits_test.go +++ b/cmd/setup_circuits_test.go @@ -22,11 +22,8 @@ type circuitsTestSuite struct { } func (suite *circuitsTestSuite) SetupSuite() { - db, err := db.New("sqlite", ":memory:") - if err != nil { - suite.T().Fatal(err) - } - config.Init(db) + _ = db.NewInstance("sqlite", ":memory:") + config.Init() } func (suite *circuitsTestSuite) SetupTest() { diff --git a/util/config/config.go b/util/config/config.go index d751d3ea4..36340004e 100644 --- a/util/config/config.go +++ b/util/config/config.go @@ -6,6 +6,7 @@ import ( "strconv" "strings" + "github.com/evcc-io/evcc/server/db" "github.com/evcc-io/evcc/util/templates" "gorm.io/gorm" ) @@ -55,7 +56,7 @@ func WithProperties(p Properties) func(*Config) { // Update updates a config's details to the database func (d *Config) Update(conf map[string]any, opt ...func(*Config)) error { - return db.Transaction(func(tx *gorm.DB) error { + return db.Instance.Transaction(func(tx *gorm.DB) error { var config Config if err := tx.Where(Config{Class: d.Class, ID: d.ID}).First(&config).Error; err != nil { return err @@ -72,15 +73,11 @@ func (d *Config) Update(conf map[string]any, opt ...func(*Config)) error { // Delete deletes a config from the database func (d *Config) Delete() error { - return db.Delete(Config{ID: d.ID}).Error + return db.Instance.Delete(Config{ID: d.ID}).Error } -var db *gorm.DB - -func Init(instance *gorm.DB) error { - db = instance - m := db.Migrator() - return m.AutoMigrate(new(Config)) +func Init() error { + return db.Instance.AutoMigrate(new(Config)) } // NameForID returns a unique config name for the given id @@ -96,7 +93,7 @@ func IDForName(name string) (int, error) { // ConfigurationsByClass returns devices by class from the database func ConfigurationsByClass(class templates.Class) ([]Config, error) { var devices []Config - tx := db.Where(&Config{Class: class}).Find(&devices) + tx := db.Instance.Where(&Config{Class: class}).Find(&devices) // remove devices without details res := make([]Config, 0, len(devices)) @@ -112,7 +109,7 @@ func ConfigurationsByClass(class templates.Class) ([]Config, error) { // ConfigByID returns device by id from the database func ConfigByID(id int) (Config, error) { var config Config - tx := db.Where(&Config{ID: id}).First(&config) + tx := db.Instance.Where(&Config{ID: id}).First(&config) return config, tx.Error } @@ -127,7 +124,7 @@ func AddConfig(class templates.Class, conf map[string]any, opt ...func(*Config)) o(&config) } - if err := db.Create(&config).Error; err != nil { + if err := db.Instance.Create(&config).Error; err != nil { return Config{}, err }