func()

in backend/plugins/jira/models/migrationscripts/20220716_add_init_tables.go [53:146]


func (script *addInitTables20220716) Up(basicRes context.BasicRes) errors.Error {
	var err errors.Error
	if err = basicRes.GetDal().DropTables(
		// history table
		"_raw_jira_api_users",
		"_raw_jira_api_boards",
		"_raw_jira_api_changelogs",
		"_raw_jira_api_issues",
		"_raw_jira_api_projects",
		"_raw_jira_api_remotelinks",
		"_raw_jira_api_sprints",
		"_raw_jira_api_status",
		"_raw_jira_api_worklogs",
		"_tool_jira_accounts",
		"_tool_jira_issue_type_mappings",
		"_tool_jira_issue_status_mappings",
		"_tool_jira_changelogs",
		"_tool_jira_changelog_items",
		&archived.JiraProject{},
		&archived.JiraIssue{},
		&archived.JiraBoard{},
		&archived.JiraBoardIssue{},
		&archived.JiraRemotelink{},
		&archived.JiraIssueCommit{},
		&archived.JiraSprint{},
		&archived.JiraBoardSprint{},
		&archived.JiraSprintIssue{},
		&archived.JiraWorklog{},
	); err != nil {
		return err
	}
	encKey := config.GetConfig().GetString(plugin.EncodeKeyEnvStr)
	if encKey == "" {
		return errors.BadInput.New("jira v0.11 invalid encKey")
	}

	err = migrationhelper.TransformColumns(
		basicRes,
		script,
		"_tool_jira_connections",
		[]string{
			"rate_limit",
			"basic_auth_encoded",
		},
		func(old *jiraConnection20220716Before) (*jiraConnection20220716After, errors.Error) {
			conn := &jiraConnection20220716After{}
			conn.ID = old.ID
			conn.Name = old.Name
			conn.Endpoint = old.Endpoint
			conn.Proxy = old.Proxy
			conn.RateLimitPerHour = old.RateLimit

			var auth string
			if auth, err = plugin.Decrypt(encKey, old.BasicAuthEncoded); err != nil {
				return nil, err
			}
			pk, err1 := base64.StdEncoding.DecodeString(auth)
			if err1 != nil {
				return nil, errors.Convert(err1)
			}
			originInfo := strings.Split(string(pk), ":")
			if len(originInfo) == 2 {
				conn.Username = originInfo[0]
				conn.Password, err = plugin.Encrypt(encKey, originInfo[1])
				if err != nil {
					return nil, err
				}
				return conn, nil
			}
			return nil, errors.Default.New("invalid BasicAuthEncoded")
		})
	if err != nil {
		return err
	}
	return migrationhelper.AutoMigrateTables(
		basicRes,
		&archived.JiraAccount{},
		&archived.JiraBoardIssue{},
		&archived.JiraBoard{},
		&archived.JiraIssueChangelogItems{},
		&archived.JiraIssueChangelogs{},
		&archived.JiraIssueCommit{},
		&archived.JiraIssueLabel{},
		&archived.JiraIssue{},
		&archived.JiraProject{},
		&archived.JiraRemotelink{},
		&archived.JiraSprint{},
		&archived.JiraBoardSprint{},
		&archived.JiraSprintIssue{},
		&archived.JiraStatus{},
		&archived.JiraWorklog{},
		&archived.JiraIssueType{},
	)
}