Skip to content

Commit 9192e52

Browse files
fix(migration): fix rename operations in tapd plugin (#6970) (#6972)
Co-authored-by: Lynwee <linwei.hou@merico.dev>
1 parent 3c38f03 commit 9192e52

File tree

1 file changed

+33
-18
lines changed

1 file changed

+33
-18
lines changed

backend/plugins/tapd/models/migrationscripts/20230411_modify_custom_field_name.go

Lines changed: 33 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -20,43 +20,42 @@ package migrationscripts
2020
import (
2121
"fmt"
2222
"github.com/apache/incubator-devlake/core/context"
23+
"github.com/apache/incubator-devlake/core/dal"
2324
"github.com/apache/incubator-devlake/core/errors"
2425
)
2526

2627
type modifyCustomFieldName struct{}
2728

2829
func (*modifyCustomFieldName) Up(basicRes context.BasicRes) errors.Error {
2930
db := basicRes.GetDal()
30-
var err errors.Error
3131
issuesNameList := []string{"_tool_tapd_stories", "_tool_tapd_bugs", "_tool_tapd_tasks"}
3232
for _, issuesName := range issuesNameList {
3333
switch issuesName {
3434
case "_tool_tapd_bugs":
3535
for i := 6; i < 9; i++ {
36-
err = db.RenameColumn(issuesName, fmt.Sprintf("custom_field%d", i), fmt.Sprintf("custom_field_%d", i))
37-
if err != nil {
36+
oldColumnName := fmt.Sprintf("custom_field%d", i)
37+
newColumnName := fmt.Sprintf("custom_field_%d", i)
38+
if err := renameColumnSafely(db, issuesName, oldColumnName, newColumnName, dal.Text); err != nil {
3839
return err
3940
}
4041
}
41-
case "_tool_tapd_stories":
42-
fallthrough
43-
case "_tool_tapd_tasks":
44-
err = db.RenameColumn(issuesName, `custom_field6`, `custom_field_six`)
45-
if err != nil {
46-
return err
47-
}
48-
err = db.RenameColumn(issuesName, `custom_field7`, `custom_field_seven`)
49-
if err != nil {
50-
return err
42+
case "_tool_tapd_tasks", "_tool_tapd_stories":
43+
tableName := issuesName
44+
renameColumnMap := map[string]string{
45+
"custom_field6": "custom_field_six",
46+
"custom_field7": "custom_field_seven",
47+
"custom_field8": "custom_field_eight",
5148
}
52-
err = db.RenameColumn(issuesName, `custom_field8`, `custom_field_eight`)
53-
if err != nil {
54-
return err
49+
for oldColumn, newColumn := range renameColumnMap {
50+
if err := renameColumnSafely(db, tableName, oldColumn, newColumn, dal.Text); err != nil {
51+
return err
52+
}
5553
}
5654
}
5755
for i := 9; i <= 50; i++ {
58-
err = db.RenameColumn(issuesName, fmt.Sprintf("custom_field%d", i), fmt.Sprintf("custom_field_%d", i))
59-
if err != nil {
56+
oldColumnName := fmt.Sprintf("custom_field%d", i)
57+
newColumnName := fmt.Sprintf("custom_field_%d", i)
58+
if err := renameColumnSafely(db, issuesName, oldColumnName, newColumnName, dal.Text); err != nil {
6059
return err
6160
}
6261
}
@@ -71,3 +70,19 @@ func (*modifyCustomFieldName) Version() uint64 {
7170
func (*modifyCustomFieldName) Name() string {
7271
return "modify tapd custom field name"
7372
}
73+
74+
func renameColumnSafely(db dal.Dal, table, oldColumn string, newColumn string, newColumnType dal.ColumnType) errors.Error {
75+
if table == "" || oldColumn == "" || newColumn == "" {
76+
return errors.BadInput.New("empty params")
77+
}
78+
if db.HasColumn(table, oldColumn) {
79+
if !db.HasColumn(table, newColumn) {
80+
return db.RenameColumn(table, oldColumn, newColumn)
81+
}
82+
} else {
83+
if !db.HasColumn(table, newColumn) {
84+
return db.AddColumn(table, newColumn, newColumnType)
85+
}
86+
}
87+
return nil
88+
}

0 commit comments

Comments
 (0)