This is an automated email from the ASF dual-hosted git repository. klesh pushed a commit to branch kw-7852-components-field-length in repository https://gitbox.apache.org/repos/asf/incubator-devlake.git
commit 6128b6872715ae4677c5a616c8b1eff6234c7384 Author: Klesh Wong <[email protected]> AuthorDate: Wed Aug 7 17:23:32 2024 +0800 refactor: update github issue extractor to extract single record --- .../github_graphql/tasks/issue_extractor.go | 55 ++++++++++------------ 1 file changed, 26 insertions(+), 29 deletions(-) diff --git a/backend/plugins/github_graphql/tasks/issue_extractor.go b/backend/plugins/github_graphql/tasks/issue_extractor.go index b5652587e..7ebd40822 100644 --- a/backend/plugins/github_graphql/tasks/issue_extractor.go +++ b/backend/plugins/github_graphql/tasks/issue_extractor.go @@ -63,38 +63,35 @@ func ExtractIssues(taskCtx plugin.SubTaskContext) errors.Error { Table: RAW_ISSUES_TABLE, }, Extract: func(row *api.RawData) ([]interface{}, errors.Error) { - apiIssue := &GraphqlQueryIssueWrapper{} - err := errors.Convert(json.Unmarshal(row.Data, apiIssue)) + issue := &GraphqlQueryIssue{} + err := errors.Convert(json.Unmarshal(row.Data, issue)) if err != nil { return nil, err } - issues := apiIssue.Repository.IssueList.Issues results := make([]interface{}, 0, 1) - for _, issue := range issues { - githubIssue, err := convertGithubIssue(milestoneMap, issue, data.Options.ConnectionId, data.Options.GithubId) - if err != nil { - return nil, err - } - githubLabels, err := convertGithubLabels(issueRegexes, issue, githubIssue) - if err != nil { - return nil, err - } - results = append(results, githubLabels...) - results = append(results, githubIssue) - if len(issue.AssigneeList.Assignees) > 0 { - extractGraphqlPreAccount(&results, &issue.AssigneeList.Assignees[0], data.Options.GithubId, data.Options.ConnectionId) - } - extractGraphqlPreAccount(&results, issue.Author, data.Options.GithubId, data.Options.ConnectionId) - for _, assignee := range issue.AssigneeList.Assignees { - issueAssignee := &models.GithubIssueAssignee{ - ConnectionId: githubIssue.ConnectionId, - IssueId: githubIssue.GithubId, - RepoId: githubIssue.RepoId, - AssigneeId: assignee.Id, - AssigneeName: assignee.Login, - } - results = append(results, issueAssignee) + githubIssue, err := convertGithubIssue(milestoneMap, issue, data.Options.ConnectionId, data.Options.GithubId) + if err != nil { + return nil, err + } + githubLabels, err := convertGithubLabels(issueRegexes, issue, githubIssue) + if err != nil { + return nil, err + } + results = append(results, githubLabels...) + results = append(results, githubIssue) + if len(issue.AssigneeList.Assignees) > 0 { + extractGraphqlPreAccount(&results, &issue.AssigneeList.Assignees[0], data.Options.GithubId, data.Options.ConnectionId) + } + extractGraphqlPreAccount(&results, issue.Author, data.Options.GithubId, data.Options.ConnectionId) + for _, assignee := range issue.AssigneeList.Assignees { + issueAssignee := &models.GithubIssueAssignee{ + ConnectionId: githubIssue.ConnectionId, + IssueId: githubIssue.GithubId, + RepoId: githubIssue.RepoId, + AssigneeId: assignee.Id, + AssigneeName: assignee.Login, } + results = append(results, issueAssignee) } return results, nil }, @@ -129,7 +126,7 @@ func getMilestoneMap(db dal.Dal, repoId int, connectionId uint64) (map[int]int, return milestoneMap, nil } -func convertGithubIssue(milestoneMap map[int]int, issue GraphqlQueryIssue, connectionId uint64, repositoryId int) (*models.GithubIssue, errors.Error) { +func convertGithubIssue(milestoneMap map[int]int, issue *GraphqlQueryIssue, connectionId uint64, repositoryId int) (*models.GithubIssue, errors.Error) { githubIssue := &models.GithubIssue{ ConnectionId: connectionId, GithubId: issue.DatabaseId, @@ -163,7 +160,7 @@ func convertGithubIssue(milestoneMap map[int]int, issue GraphqlQueryIssue, conne return githubIssue, nil } -func convertGithubLabels(issueRegexes *githubTasks.IssueRegexes, issue GraphqlQueryIssue, githubIssue *models.GithubIssue) ([]interface{}, errors.Error) { +func convertGithubLabels(issueRegexes *githubTasks.IssueRegexes, issue *GraphqlQueryIssue, githubIssue *models.GithubIssue) ([]interface{}, errors.Error) { var results []interface{} var joinedLabels []string for _, label := range issue.Labels.Nodes {
