This is an automated email from the ASF dual-hosted git repository.

lynwee pushed a commit to branch release-v0.21
in repository https://gitbox.apache.org/repos/asf/incubator-devlake.git


The following commit(s) were added to refs/heads/release-v0.21 by this push:
     new 9192e522d fix(migration): fix rename operations in tapd plugin (#6970) 
(#6972)
9192e522d is described below

commit 9192e522db78e7b8fc17288cc28f45448cf61b84
Author: github-actions[bot] 
<41898282+github-actions[bot]@users.noreply.github.com>
AuthorDate: Mon Feb 19 14:49:30 2024 +0800

    fix(migration): fix rename operations in tapd plugin (#6970) (#6972)
    
    Co-authored-by: Lynwee <[email protected]>
---
 .../20230411_modify_custom_field_name.go           | 51 ++++++++++++++--------
 1 file changed, 33 insertions(+), 18 deletions(-)

diff --git 
a/backend/plugins/tapd/models/migrationscripts/20230411_modify_custom_field_name.go
 
b/backend/plugins/tapd/models/migrationscripts/20230411_modify_custom_field_name.go
index 2e3857375..fe3703710 100644
--- 
a/backend/plugins/tapd/models/migrationscripts/20230411_modify_custom_field_name.go
+++ 
b/backend/plugins/tapd/models/migrationscripts/20230411_modify_custom_field_name.go
@@ -20,6 +20,7 @@ package migrationscripts
 import (
        "fmt"
        "github.com/apache/incubator-devlake/core/context"
+       "github.com/apache/incubator-devlake/core/dal"
        "github.com/apache/incubator-devlake/core/errors"
 )
 
@@ -27,36 +28,34 @@ type modifyCustomFieldName struct{}
 
 func (*modifyCustomFieldName) Up(basicRes context.BasicRes) errors.Error {
        db := basicRes.GetDal()
-       var err errors.Error
        issuesNameList := []string{"_tool_tapd_stories", "_tool_tapd_bugs", 
"_tool_tapd_tasks"}
        for _, issuesName := range issuesNameList {
                switch issuesName {
                case "_tool_tapd_bugs":
                        for i := 6; i < 9; i++ {
-                               err = db.RenameColumn(issuesName, 
fmt.Sprintf("custom_field%d", i), fmt.Sprintf("custom_field_%d", i))
-                               if err != nil {
+                               oldColumnName := fmt.Sprintf("custom_field%d", 
i)
+                               newColumnName := fmt.Sprintf("custom_field_%d", 
i)
+                               if err := renameColumnSafely(db, issuesName, 
oldColumnName, newColumnName, dal.Text); err != nil {
                                        return err
                                }
                        }
-               case "_tool_tapd_stories":
-                       fallthrough
-               case "_tool_tapd_tasks":
-                       err = db.RenameColumn(issuesName, `custom_field6`, 
`custom_field_six`)
-                       if err != nil {
-                               return err
-                       }
-                       err = db.RenameColumn(issuesName, `custom_field7`, 
`custom_field_seven`)
-                       if err != nil {
-                               return err
+               case "_tool_tapd_tasks", "_tool_tapd_stories":
+                       tableName := issuesName
+                       renameColumnMap := map[string]string{
+                               "custom_field6": "custom_field_six",
+                               "custom_field7": "custom_field_seven",
+                               "custom_field8": "custom_field_eight",
                        }
-                       err = db.RenameColumn(issuesName, `custom_field8`, 
`custom_field_eight`)
-                       if err != nil {
-                               return err
+                       for oldColumn, newColumn := range renameColumnMap {
+                               if err := renameColumnSafely(db, tableName, 
oldColumn, newColumn, dal.Text); err != nil {
+                                       return err
+                               }
                        }
                }
                for i := 9; i <= 50; i++ {
-                       err = db.RenameColumn(issuesName, 
fmt.Sprintf("custom_field%d", i), fmt.Sprintf("custom_field_%d", i))
-                       if err != nil {
+                       oldColumnName := fmt.Sprintf("custom_field%d", i)
+                       newColumnName := fmt.Sprintf("custom_field_%d", i)
+                       if err := renameColumnSafely(db, issuesName, 
oldColumnName, newColumnName, dal.Text); err != nil {
                                return err
                        }
                }
@@ -71,3 +70,19 @@ func (*modifyCustomFieldName) Version() uint64 {
 func (*modifyCustomFieldName) Name() string {
        return "modify tapd custom field name"
 }
+
+func renameColumnSafely(db dal.Dal, table, oldColumn string, newColumn string, 
newColumnType dal.ColumnType) errors.Error {
+       if table == "" || oldColumn == "" || newColumn == "" {
+               return errors.BadInput.New("empty params")
+       }
+       if db.HasColumn(table, oldColumn) {
+               if !db.HasColumn(table, newColumn) {
+                       return db.RenameColumn(table, oldColumn, newColumn)
+               }
+       } else {
+               if !db.HasColumn(table, newColumn) {
+                       return db.AddColumn(table, newColumn, newColumnType)
+               }
+       }
+       return nil
+}

Reply via email to