This is an automated email from the ASF dual-hosted git repository.
klesh pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-devlake.git
The following commit(s) were added to refs/heads/main by this push:
new d12a3a152 [fix-5697][Pydevlake]: Fix AddColumn op possibly deleting a
column (#5714)
d12a3a152 is described below
commit d12a3a1520ddf5721ba0f761cc5aa1f326f270bc
Author: Keon Amini <[email protected]>
AuthorDate: Mon Jul 24 04:44:35 2023 +0330
[fix-5697][Pydevlake]: Fix AddColumn op possibly deleting a column (#5714)
* fix: fixed AddColumn op deleting the column if it already exists
* fix: RunAutoMigrations now only creates tables if they don't exist to
partially avoid conflict with manual migrations. See #5689 for context.
* fix: add new migration for entities column addition to force-retrigger it
---
.../python/plugins/azuredevops/azuredevops/models.py | 4 ++++
backend/server/services/remote/models/migration.go | 9 ++++++---
backend/server/services/remote/plugin/plugin_impl.go | 17 ++++++++++++-----
3 files changed, 22 insertions(+), 8 deletions(-)
diff --git a/backend/python/plugins/azuredevops/azuredevops/models.py
b/backend/python/plugins/azuredevops/azuredevops/models.py
index 879392e4b..f327334a4 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')
diff --git a/backend/server/services/remote/models/migration.go
b/backend/server/services/remote/models/migration.go
index 3f5aebc78..1862bf5da 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
}
diff --git a/backend/server/services/remote/plugin/plugin_impl.go
b/backend/server/services/remote/plugin/plugin_impl.go
index 657409212..1e6c66d1c 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
}