Fix loading empty config
This commit is contained in:
@@ -66,8 +66,6 @@ func Run() {
|
|||||||
var homeDir string
|
var homeDir string
|
||||||
var dataDir string
|
var dataDir string
|
||||||
var DB *gorm.DB
|
var DB *gorm.DB
|
||||||
var initialConfig db.AppConfig
|
|
||||||
var result *gorm.DB
|
|
||||||
|
|
||||||
networkIsUp = false
|
networkIsUp = false
|
||||||
|
|
||||||
@@ -110,12 +108,12 @@ func Run() {
|
|||||||
|
|
||||||
// Populate the initial Config cache OR create defaults
|
// Populate the initial Config cache OR create defaults
|
||||||
firstRun := false
|
firstRun := false
|
||||||
result = DB.Unscoped().First(&initialConfig)
|
startupConfig, err := db.GetConfig(DB)
|
||||||
if result.Error != nil {
|
if err != nil {
|
||||||
if errors.Is(result.Error, gorm.ErrRecordNotFound) {
|
if errors.Is(err, gorm.ErrRecordNotFound) {
|
||||||
logger.Info("First run detected: Creating default configuration...")
|
logger.Info("No config found in database, generating defaults")
|
||||||
firstRun = true
|
firstRun = true
|
||||||
initialConfig = db.AppConfig{
|
startupConfig = &db.AppConfig{
|
||||||
DataDir: dataDir,
|
DataDir: dataDir,
|
||||||
AssetsDir: dataDir,
|
AssetsDir: dataDir,
|
||||||
SystemLevel: "BASIC",
|
SystemLevel: "BASIC",
|
||||||
@@ -126,14 +124,15 @@ func Run() {
|
|||||||
AudioEnabled: true,
|
AudioEnabled: true,
|
||||||
SavedVolume: 1.0,
|
SavedVolume: 1.0,
|
||||||
}
|
}
|
||||||
if err := DB.Create(&initialConfig).Error; err != nil {
|
|
||||||
|
// Now save it to the database to create the config for all subsequent queries
|
||||||
|
if err := DB.Create(&startupConfig).Error; err != nil {
|
||||||
logger.Error("failed to insert default config into database: %v", err)
|
logger.Error("failed to insert default config into database: %v", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
logger.Error("error querying database for initial config: %v", result.Error)
|
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
logger.Error("failed to read configuration from database")
|
||||||
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
logger.AddDatabase(DB)
|
logger.AddDatabase(DB)
|
||||||
|
|||||||
@@ -2,10 +2,13 @@ package db
|
|||||||
|
|
||||||
import "gorm.io/gorm"
|
import "gorm.io/gorm"
|
||||||
|
|
||||||
|
// GetConfig fetches the application config from the database
|
||||||
func GetConfig(db *gorm.DB) (*AppConfig, error) {
|
func GetConfig(db *gorm.DB) (*AppConfig, error) {
|
||||||
var appConfig AppConfig
|
var cfg AppConfig
|
||||||
if err := db.First(&appConfig).Error; err != nil {
|
err := db.First(&cfg, 1).Error
|
||||||
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
return &appConfig, nil
|
|
||||||
|
return &cfg, err
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user