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 3a0f52ee fix: jira connection is deleted when enckey is error (#2648)
3a0f52ee is described below
commit 3a0f52eec956c2bd98ab196335fcfd0ec096cc01
Author: abeizn <[email protected]>
AuthorDate: Mon Aug 1 16:00:09 2022 +0800
fix: jira connection is deleted when enckey is error (#2648)
* fix: jira connection is deleted when enckey is error
* fix: jira connection is deleted when enckey is error
* fix: jira connection is deleted when enckey is error and update jira
migration scripts
* fix: jira connection is deleted when enckey is error and update jira
migration scripts
---
.../migrationscripts/20220407_add_source_table.go | 28 +++++++
.../20220505_rename_source_table.go | 9 +-
.../migrationscripts/20220716_add_init_tables.go | 98 +++++++++++-----------
plugins/jira/models/migrationscripts/register.go | 1 +
4 files changed, 83 insertions(+), 53 deletions(-)
diff --git a/plugins/jira/models/migrationscripts/20220407_add_source_table.go
b/plugins/jira/models/migrationscripts/20220407_add_source_table.go
new file mode 100644
index 00000000..d8c3eb29
--- /dev/null
+++ b/plugins/jira/models/migrationscripts/20220407_add_source_table.go
@@ -0,0 +1,28 @@
+package migrationscripts
+
+import (
+ "context"
+
+
"github.com/apache/incubator-devlake/plugins/jira/models/migrationscripts/archived"
+ "gorm.io/gorm"
+)
+
+type InitSchemas struct{}
+
+func (*InitSchemas) Up(ctx context.Context, db *gorm.DB) error {
+ m := db.Migrator()
+ if m.HasTable(&archived.JiraConnection{}) {
+ return nil
+ }
+ return db.Migrator().AutoMigrate(
+ &archived.JiraSource{},
+ )
+}
+
+func (*InitSchemas) Version() uint64 {
+ return 20220407201138
+}
+
+func (*InitSchemas) Name() string {
+ return "Jira init schemas"
+}
diff --git
a/plugins/jira/models/migrationscripts/20220505_rename_source_table.go
b/plugins/jira/models/migrationscripts/20220505_rename_source_table.go
index 2056c7a6..ef201aa5 100644
--- a/plugins/jira/models/migrationscripts/20220505_rename_source_table.go
+++ b/plugins/jira/models/migrationscripts/20220505_rename_source_table.go
@@ -42,12 +42,9 @@ func (JiraConnectionV010) TableName() string {
type renameSourceTable struct{}
func (*renameSourceTable) Up(ctx context.Context, db *gorm.DB) error {
- m := db.Migrator()
- if m.HasTable(&archived.JiraSource{}) &&
!m.HasTable(&archived.JiraConnection{}) {
- err := db.Migrator().RenameTable(archived.JiraSource{},
JiraConnectionV010{})
- if err != nil {
- return err
- }
+ err := db.Migrator().RenameTable(archived.JiraSource{},
JiraConnectionV010{})
+ if err != nil {
+ return err
}
return nil
}
diff --git a/plugins/jira/models/migrationscripts/20220716_add_init_tables.go
b/plugins/jira/models/migrationscripts/20220716_add_init_tables.go
index 557d6351..defc0f15 100644
--- a/plugins/jira/models/migrationscripts/20220716_add_init_tables.go
+++ b/plugins/jira/models/migrationscripts/20220716_add_init_tables.go
@@ -30,6 +30,15 @@ import (
"gorm.io/gorm"
)
+type JiraConnectionTemp struct {
+ archived.RestConnection `mapstructure:",squash"`
+ archived.BasicAuth `mapstructure:",squash"`
+}
+
+func (JiraConnectionTemp) TableName() string {
+ return "_tool_jira_connections_temp"
+}
+
type JiraConnectionV011 struct {
ID uint64 `gorm:"primaryKey" json:"id"`
CreatedAt time.Time `json:"createdAt"`
@@ -84,66 +93,61 @@ func (*addInitTables) Up(ctx context.Context, db *gorm.DB)
error {
}
// get connection history data
- var result *gorm.DB
- m := db.Migrator()
-
- if m.HasTable(&JiraConnectionV011{}) {
- var jiraConns []JiraConnectionV011
- result = db.Find(&jiraConns)
+ err = db.Migrator().AutoMigrate(&JiraConnectionTemp{})
+ if err != nil {
+ return err
+ }
+ defer db.Migrator().DropTable(&JiraConnectionTemp{})
- if result.Error == nil {
- err := db.Migrator().DropTable(&JiraConnectionV011{})
+ var result *gorm.DB
+ var jiraConns []JiraConnectionV011
+ result = db.Find(&jiraConns)
+
+ if result.Error == nil {
+ for _, v := range jiraConns {
+ conn := &JiraConnectionTemp{}
+ conn.ID = v.ID
+ conn.Name = v.Name
+ conn.Endpoint = v.Endpoint
+ conn.Proxy = v.Proxy
+ conn.RateLimitPerHour = v.RateLimit
+
+ c := config.GetConfig()
+ encKey := c.GetString(core.EncodeKeyEnvStr)
+ if encKey == "" {
+ return fmt.Errorf("jira v0.11 invalid encKey")
+ }
+ auth, err := core.Decrypt(encKey, v.BasicAuthEncoded)
if err != nil {
return err
}
- err =
db.Migrator().AutoMigrate(&archived.JiraConnection{})
+ pk, err := base64.StdEncoding.DecodeString(auth)
if err != nil {
return err
}
-
- for _, v := range jiraConns {
- conn := &archived.JiraConnection{}
- conn.ID = v.ID
- conn.Name = v.Name
- conn.Endpoint = v.Endpoint
- conn.Proxy = v.Proxy
- conn.RateLimitPerHour = v.RateLimit
-
- c := config.GetConfig()
- encKey := c.GetString(core.EncodeKeyEnvStr)
- if encKey == "" {
- return fmt.Errorf("jira v0.11 invalid
encKey")
- }
- auth, err := core.Decrypt(encKey,
v.BasicAuthEncoded)
+ originInfo := strings.Split(string(pk), ":")
+ if len(originInfo) == 2 {
+ conn.Username = originInfo[0]
+ conn.Password, err = core.Encrypt(encKey,
originInfo[1])
if err != nil {
return err
}
- pk, err := base64.StdEncoding.DecodeString(auth)
- if err != nil {
- return err
- }
- originInfo := strings.Split(string(pk), ":")
- if len(originInfo) == 2 {
- conn.Username = originInfo[0]
- conn.Password, err =
core.Encrypt(encKey, originInfo[1])
- if err != nil {
- return err
- }
- // create
- db.Create(&conn)
+ // create
+ err := db.Create(&conn)
+ if err.Error != nil {
+ return err.Error
}
}
}
- } else {
- c := config.GetConfig()
- encKey := c.GetString("ENCODE_KEY")
- if encKey == "" {
- return fmt.Errorf("jira invalid encKey")
- }
- err := db.Migrator().AutoMigrate(&archived.JiraConnection{})
- if err != nil {
- return err
- }
+ }
+
+ err = db.Migrator().DropTable(&JiraConnectionV011{})
+ if err != nil {
+ return err
+ }
+ err = db.Migrator().RenameTable(JiraConnectionTemp{},
archived.JiraConnection{})
+ if err != nil {
+ return err
}
return db.Migrator().AutoMigrate(
diff --git a/plugins/jira/models/migrationscripts/register.go
b/plugins/jira/models/migrationscripts/register.go
index 3c89eaff..4825b43d 100644
--- a/plugins/jira/models/migrationscripts/register.go
+++ b/plugins/jira/models/migrationscripts/register.go
@@ -24,6 +24,7 @@ import (
// All return all the migration scripts
func All() []migration.Script {
return []migration.Script{
+ new(InitSchemas),
new(renameSourceTable),
new(addInitTables),
}