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