From 8cb9c0acccef50f77b2c598c6a6bd715b72bc438 Mon Sep 17 00:00:00 2001 From: Keon Amini Date: Thu, 20 Jul 2023 18:55:27 +0330 Subject: [PATCH 1/3] fix: fixed AddColumn op deleting the column if it already exists --- backend/server/services/remote/models/migration.go | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/backend/server/services/remote/models/migration.go b/backend/server/services/remote/models/migration.go index 3f5aebc78aa..1862bf5da54 100644 --- a/backend/server/services/remote/models/migration.go +++ b/backend/server/services/remote/models/migration.go @@ -56,7 +56,10 @@ type AddColumnOperation struct { func (o AddColumnOperation) Execute(dal dal.Dal) errors.Error { if dal.HasColumn(o.Table, o.Column) { - return dal.DropColumns(o.Table, o.Column) + err := dal.DropColumns(o.Table, o.Column) + if err != nil { + return err + } } return dal.AddColumn(o.Table, o.Column, o.ColumnType) } @@ -162,9 +165,9 @@ func (s *RemoteMigrationScript) UnmarshalJSON(data []byte) error { } func (s *RemoteMigrationScript) Up(basicRes context.BasicRes) errors.Error { - dal := basicRes.GetDal() + db := basicRes.GetDal() for _, operation := range s.operations { - err := operation.Execute(dal) + err := operation.Execute(db) if err != nil { return err } From 2c6c3aa2ba8d5cc2b35823aa6ad01d18e94d55e3 Mon Sep 17 00:00:00 2001 From: Keon Amini Date: Thu, 20 Jul 2023 18:56:01 +0330 Subject: [PATCH 2/3] fix: RunAutoMigrations now only creates tables if they don't exist to partially avoid conflict with manual migrations. See #5689 for context. --- .../services/remote/plugin/plugin_impl.go | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/backend/server/services/remote/plugin/plugin_impl.go b/backend/server/services/remote/plugin/plugin_impl.go index 657409212f6..1e6c66d1c6b 100644 --- a/backend/server/services/remote/plugin/plugin_impl.go +++ b/backend/server/services/remote/plugin/plugin_impl.go @@ -231,21 +231,20 @@ func (p *remotePluginImpl) ApiResources() map[string]map[string]plugin.ApiResour } func (p *remotePluginImpl) RunAutoMigrations() errors.Error { - db := basicRes.GetDal() - err := api.CallDB(db.AutoMigrate, p.connectionTabler.New()) + err := p.createTable(p.connectionTabler.New()) if err != nil { return err } - err = api.CallDB(db.AutoMigrate, p.scopeTabler.New()) + err = p.createTable(p.scopeTabler.New()) if err != nil { return err } - err = api.CallDB(db.AutoMigrate, p.scopeConfigTabler.New()) + err = p.createTable(p.scopeConfigTabler.New()) if err != nil { return err } for _, toolModelTabler := range p.toolModelTablers { - err = api.CallDB(db.AutoMigrate, toolModelTabler.New()) + err = p.createTable(toolModelTabler.New()) if err != nil { return err } @@ -253,6 +252,14 @@ func (p *remotePluginImpl) RunAutoMigrations() errors.Error { return nil } +func (p *remotePluginImpl) createTable(tbl coreModels.DynamicTabler) errors.Error { + db := basicRes.GetDal() + if db.HasTable(tbl.TableName()) { + return nil + } + return api.CallDB(db.AutoMigrate, tbl) +} + func (p *remotePluginImpl) OpenApiSpec() string { return p.openApiSpec } From 01bbb0df10d94daa05e7ce4438beea81068235eb Mon Sep 17 00:00:00 2001 From: Keon Amini Date: Fri, 21 Jul 2023 17:50:09 +0330 Subject: [PATCH 3/3] fix: add new migration for entities column addition to force-retrigger it --- backend/python/plugins/azuredevops/azuredevops/models.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/backend/python/plugins/azuredevops/azuredevops/models.py b/backend/python/plugins/azuredevops/azuredevops/models.py index 879392e4b6c..f327334a425 100644 --- a/backend/python/plugins/azuredevops/azuredevops/models.py +++ b/backend/python/plugins/azuredevops/azuredevops/models.py @@ -145,6 +145,10 @@ def add_build_id_as_job_primary_key(b: MigrationScriptBuilder): @migration(20230606165630) def rename_tx_rule_table_to_scope_config(b: MigrationScriptBuilder): b.rename_table('_tool_azuredevops_azuredevopstransformationrules', GitRepositoryConfig.__tablename__) + + +@migration(20230607165630, name="add entities column to gitrepositoryconfig table") +def add_entities_column_to_scope_config(b: MigrationScriptBuilder): b.add_column(GitRepositoryConfig.__tablename__, 'entities', 'json')