fix: Improve database initialization and connection handling

- Added logic to close the database connection after migrations to ensure a clean state.
- Implemented reconnection to the database post-migrations to prevent potential issues.
- Updated rclone connection logic to use 'host' instead of 'endpoint' for webdav and nextcloud providers, enhancing consistency in configuration arguments.
This commit is contained in:
StarFleetCPTN
2025-04-09 19:15:17 -07:00
parent 66623693df
commit db44823ecf
2 changed files with 17 additions and 9 deletions
+15 -7
View File
@@ -33,6 +33,21 @@ func Initialize(dbPath string) (*DB, error) {
return nil, fmt.Errorf("failed to run migrations: %v", err)
}
// Close the database connection after migrations
sqlDB, err := db.DB()
if err != nil {
return nil, fmt.Errorf("failed to get underlying database: %v", err)
}
if err := sqlDB.Close(); err != nil {
return nil, fmt.Errorf("failed to close database after migrations: %v", err)
}
// Reopen the database connection for a clean state
db, err = gorm.Open(sqlite.Open(dbPath), &gorm.Config{})
if err != nil {
return nil, fmt.Errorf("failed to reconnect to database after migrations: %v", err)
}
return &DB{DB: db}, nil
}
@@ -55,10 +70,3 @@ func (db *DB) Close() error {
}
return sqlDB.Close()
}
// GetEnabledAuthProviders returns all enabled authentication providers
// func (db *DB) GetEnabledAuthProviders(ctx context.Context) ([]AuthProvider, error) {
// var providers []AuthProvider
// result := db.WithContext(ctx).Where("enabled = ?", true).Find(&providers)
// return providers, result.Error
// }
+2 -2
View File
@@ -210,12 +210,12 @@ func TestRcloneConnection(config db.TransferConfig, providerType string, dbInsta
createArgs = append(createArgs, "domain", domain)
}
case "webdav":
createArgs = append(createArgs, "url", endpoint, "vendor", "other", "user", user)
createArgs = append(createArgs, "url", host, "vendor", "other", "user", user)
if pass != "" {
createArgs = append(createArgs, "pass", pass)
}
case "nextcloud":
createArgs = append(createArgs, "url", endpoint, "vendor", "nextcloud", "user", user)
createArgs = append(createArgs, "url", host, "vendor", "nextcloud", "user", user)
if pass != "" {
createArgs = append(createArgs, "pass", pass)
}