优化
This commit is contained in:
@@ -68,7 +68,24 @@ func (r *initializationRepo) IsInitialized(ctx context.Context) (bool, error) {
|
||||
}
|
||||
|
||||
func (r *initializationRepo) Initialize(ctx context.Context, input *biz.DatabaseConfig) error {
|
||||
config := &conf.Data_Database{Driver: input.Driver, Host: input.Host, Port: input.Port, User: input.User, Password: input.Password, Name: input.Name, Path: input.Path, Config: input.Config}
|
||||
config := &conf.Data_Database{}
|
||||
if current := r.data.runtime.Data(); current != nil && current.Database != nil {
|
||||
config = proto.Clone(current.Database).(*conf.Data_Database)
|
||||
}
|
||||
config.Driver = input.Driver
|
||||
config.Host = input.Host
|
||||
config.Port = input.Port
|
||||
config.User = input.User
|
||||
config.Password = input.Password
|
||||
config.Name = input.Name
|
||||
config.Path = input.Path
|
||||
config.Config = input.Config
|
||||
config.Source = ""
|
||||
source, err := databaseDSN(config, "")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
config.Source = source
|
||||
r.data.initMu.Lock()
|
||||
defer r.data.initMu.Unlock()
|
||||
initialized, err := r.IsInitialized(ctx)
|
||||
@@ -197,10 +214,7 @@ func (r *initializationRepo) Initialize(ctx context.Context, input *biz.Database
|
||||
}); err != nil {
|
||||
return err
|
||||
}
|
||||
currentData, currentAdmin := r.data.runtime.Values()
|
||||
nextData := proto.Clone(currentData).(*conf.Data)
|
||||
nextData.Database = config
|
||||
if err := r.data.persistConfigValues(nextData, currentAdmin); err != nil {
|
||||
if err := r.data.persistDatabaseConfig(config); err != nil {
|
||||
return fmt.Errorf("persist database configuration: %w", err)
|
||||
}
|
||||
r.data.activateDatabase(candidate, config)
|
||||
|
||||
Reference in New Issue
Block a user