tasks

package
v0.0.0-...-1fa52ee Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 3, 2024 License: Apache-2.0, BSD-2-Clause, ISC, + 1 more Imports: 23 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// https://docs.github.com/en/graphql/reference/enums#checkrunstate
	// https://docs.github.com/en/graphql/reference/enums#checkstatusstate
	// https://docs.github.com/en/graphql/reference/enums#deploymentstate
	// https://docs.github.com/en/graphql/reference/enums#checkconclusionstate
	StatusCompleted      = "COMPLETED"
	StatusSuccess        = "SUCCESS"
	StatusFailure        = "FAILURE"
	StatusCancelled      = "CANCELLED"
	StatusTimedOut       = "TIMED_OUT"
	StatusStartUpFailure = "STARTUP_FAILURE"
	StatusInProgress     = "IN_PROGRESS"
	StatusQueued         = "QUEUED"
	StatusWaiting        = "WAITING"
	StatusPending        = "PENDING"
	StatusNeutral        = "NEUTRAL"
	StatusSkipped        = "SKIPPED"
	StatusStale          = "STALE"
	StatusActionRequired = "ACTION_REQUIRED"
	StatusRequested      = "REQUESTED"
	StatusAbandoned      = "ABANDONED"
	StatusActive         = "ACTIVE"
	StatusInactive       = "INACTIVE"
	StatusDestroyed      = "DESTROYED"
	StatusError          = "ERROR"
)
View Source
const PAGE_SIZE = 30

Although the API accepts a maximum of 100 entries per page, sometimes the response body is too large which would lead to request failures https://github.com/apache/incubator-devlake/issues/3199

View Source
const RAW_ACCOUNT_ORG_TABLE = "github_api_account_orgs"
View Source
const RAW_ACCOUNT_TABLE = "github_api_accounts"
View Source
const RAW_COMMENTS_TABLE = "github_api_comments"
View Source
const RAW_COMMIT_STATS_TABLE = "github_api_commit_stats"
View Source
const RAW_COMMIT_TABLE = "github_api_commits"
View Source
const (
	RAW_DEPLOYMENT_TABLE = "github_deployment"
)
View Source
const RAW_EVENTS_TABLE = "github_api_events"
View Source
const RAW_ISSUE_TABLE = "github_api_issues"
View Source
const RAW_JOB_TABLE = "github_api_jobs"
View Source
const RAW_MILESTONE_TABLE = "github_milestones"
View Source
const RAW_PR_COMMIT_TABLE = "github_api_pull_request_commits"
View Source
const RAW_PR_REVIEW_COMMENTS_TABLE = "github_api_pull_request_review_comments"
View Source
const RAW_PR_REVIEW_TABLE = "github_api_pull_request_reviews"
View Source
const RAW_PULL_REQUEST_TABLE = "github_api_pull_requests"
View Source
const RAW_RUN_TABLE = "github_api_runs"

Variables

View Source
var CollectAccountOrgMeta = plugin.SubTaskMeta{
	Name:             "Collect User Org",
	EntryPoint:       CollectAccountOrg,
	EnabledByDefault: true,
	Description:      "Collect accounts org data from Github api, does not support either timeFilter or diffSync.",
	DomainTypes:      []string{plugin.DOMAIN_TYPE_CROSS},
	DependencyTables: []string{
		models.GithubRepoAccount{}.TableName(),
		models.GithubAccount{}.TableName(),
	},
	ProductTables: []string{RAW_ACCOUNT_ORG_TABLE},
}
View Source
var CollectAccountsMeta = plugin.SubTaskMeta{
	Name:             "Collect Users",
	EntryPoint:       CollectAccounts,
	EnabledByDefault: true,
	Description:      "Collect accounts data from Github api, does not support either timeFilter or diffSync.",
	DomainTypes:      []string{plugin.DOMAIN_TYPE_CROSS},
	DependencyTables: []string{},
	ProductTables:    []string{RAW_ACCOUNT_TABLE},
}
View Source
var CollectApiCommentsMeta = plugin.SubTaskMeta{
	Name:             "Collect Comments",
	EntryPoint:       CollectApiComments,
	EnabledByDefault: true,
	Description:      "Collect comments data from Github api, supports both timeFilter and diffSync.",
	DomainTypes:      []string{plugin.DOMAIN_TYPE_CODE_REVIEW, plugin.DOMAIN_TYPE_TICKET},
	DependencyTables: []string{},
	ProductTables:    []string{RAW_COMMENTS_TABLE},
}
View Source
var CollectApiCommitStatsMeta = plugin.SubTaskMeta{
	Name:             "Collect Commit Stats",
	EntryPoint:       CollectApiCommitStats,
	EnabledByDefault: false,
	Description:      "Collect commitStats data from Github api, does not support either timeFilter or diffSync.",
	DomainTypes:      []string{plugin.DOMAIN_TYPE_CODE},
	DependencyTables: []string{},
	ProductTables:    []string{RAW_COMMIT_STATS_TABLE},
}
View Source
var CollectApiCommitsMeta = plugin.SubTaskMeta{
	Name:             "Collect Commits",
	EntryPoint:       CollectApiCommits,
	EnabledByDefault: false,
	Description:      "Collect commits data from Github api, supports both timeFilter and diffSync.",
	DomainTypes:      []string{plugin.DOMAIN_TYPE_CODE},
	DependencyTables: []string{},
	ProductTables:    []string{RAW_COMMIT_TABLE},
}
View Source
var CollectApiEventsMeta = plugin.SubTaskMeta{
	Name:             "Collect Events",
	EntryPoint:       CollectApiEvents,
	EnabledByDefault: true,
	Description:      "Collect Events data from Github api, supports both timeFilter and diffSync.",
	DomainTypes:      []string{plugin.DOMAIN_TYPE_TICKET},
	DependencyTables: []string{},
	ProductTables:    []string{RAW_EVENTS_TABLE},
}
View Source
var CollectApiIssuesMeta = plugin.SubTaskMeta{
	Name:             "Collect Issues",
	EntryPoint:       CollectApiIssues,
	EnabledByDefault: true,
	Description:      "Collect issues data from Github api, supports both timeFilter and diffSync.",
	DomainTypes:      []string{plugin.DOMAIN_TYPE_TICKET},
	DependencyTables: []string{},
	ProductTables:    []string{RAW_ISSUE_TABLE},
}
View Source
var CollectApiPrReviewCommentsMeta = plugin.SubTaskMeta{
	Name:             "Collect PR Review Comments",
	EntryPoint:       CollectPrReviewComments,
	EnabledByDefault: true,
	Description:      "Collect pr review comments data from Github api, supports both timeFilter and diffSync.",
	DomainTypes:      []string{plugin.DOMAIN_TYPE_CROSS, plugin.DOMAIN_TYPE_CODE_REVIEW},
	DependencyTables: []string{},
	ProductTables:    []string{RAW_PR_REVIEW_COMMENTS_TABLE},
}
View Source
var CollectApiPullRequestCommitsMeta = plugin.SubTaskMeta{
	Name:             "Collect PR Commits",
	EntryPoint:       CollectApiPullRequestCommits,
	EnabledByDefault: true,
	Description:      "Collect PullRequestCommits data from Github api, supports both timeFilter and diffSync.",
	DomainTypes:      []string{plugin.DOMAIN_TYPE_CROSS, plugin.DOMAIN_TYPE_CODE_REVIEW},
	DependencyTables: []string{models.GithubPullRequest{}.TableName()},
	ProductTables:    []string{RAW_PR_COMMIT_TABLE},
}
View Source
var CollectApiPullRequestReviewsMeta = plugin.SubTaskMeta{
	Name:             "Collect PR Reviews",
	EntryPoint:       CollectApiPullRequestReviews,
	EnabledByDefault: true,
	Description:      "Collect PullRequestReviews data from Github api, supports both timeFilter and diffSync.",
	DomainTypes:      []string{plugin.DOMAIN_TYPE_CROSS, plugin.DOMAIN_TYPE_CODE_REVIEW},
	DependencyTables: []string{models.GithubPullRequest{}.TableName()},
	ProductTables:    []string{RAW_PR_REVIEW_TABLE},
}
View Source
var CollectApiPullRequestsMeta = plugin.SubTaskMeta{
	Name:             "Collect Pull Requests",
	EntryPoint:       CollectApiPullRequests,
	EnabledByDefault: true,
	Description:      "Collect PullRequests data from Github api, supports both timeFilter and diffSync.",
	DomainTypes:      []string{plugin.DOMAIN_TYPE_CROSS, plugin.DOMAIN_TYPE_CODE_REVIEW},
	DependencyTables: []string{},
	ProductTables:    []string{RAW_PULL_REQUEST_TABLE},
}
View Source
var CollectJobsMeta = plugin.SubTaskMeta{
	Name:             "Collect Job Runs",
	EntryPoint:       CollectJobs,
	EnabledByDefault: true,
	Description:      "Collect Jobs data from Github action api, supports both timeFilter and diffSync.",
	DomainTypes:      []string{plugin.DOMAIN_TYPE_CICD},
	DependencyTables: []string{models.GithubRun{}.TableName()},
	ProductTables:    []string{RAW_JOB_TABLE},
}
View Source
var CollectMilestonesMeta = plugin.SubTaskMeta{
	Name:             "Collect Milestones",
	EntryPoint:       CollectApiMilestones,
	EnabledByDefault: true,
	Description:      "Collect milestone data from Github api, does not support either timeFilter or diffSync.",
	DomainTypes:      []string{plugin.DOMAIN_TYPE_TICKET},
	DependencyTables: []string{},
	ProductTables:    []string{RAW_MILESTONE_TABLE},
}
View Source
var CollectRunsMeta = plugin.SubTaskMeta{
	Name:             "Collect Workflow Runs",
	EntryPoint:       CollectRuns,
	EnabledByDefault: true,
	Description:      "Collect Runs data from Github action api, supports both timeFilter and diffSync.",
	DomainTypes:      []string{plugin.DOMAIN_TYPE_CICD},
	DependencyTables: []string{},
	ProductTables:    []string{RAW_RUN_TABLE},
}
View Source
var ConvertAccountsMeta = plugin.SubTaskMeta{
	Name:             "Convert Users",
	EntryPoint:       ConvertAccounts,
	EnabledByDefault: true,
	Description:      "Convert tool layer table github_accounts into  domain layer table accounts",
	DomainTypes:      []string{plugin.DOMAIN_TYPE_CROSS},
	DependencyTables: []string{
		models.GithubAccount{}.TableName(),
		models.GithubRepoAccount{}.TableName(),
		models.GithubAccountOrg{}.TableName()},
	ProductTables: []string{crossdomain.Account{}.TableName()},
}
View Source
var ConvertCommitsMeta = plugin.SubTaskMeta{
	Name:             "Convert Commits",
	EntryPoint:       ConvertCommits,
	EnabledByDefault: false,
	Description:      "Convert tool layer table github_commits into  domain layer table commits",
	DomainTypes:      []string{plugin.DOMAIN_TYPE_CODE},
	DependencyTables: []string{
		models.GithubCommit{}.TableName(),
		models.GithubRepoCommit{}.TableName(),

		RAW_COMMIT_TABLE},
	ProductTables: []string{
		code.Commit{}.TableName(),
		code.RepoCommit{}.TableName()},
}
View Source
var ConvertDeploymentsMeta = plugin.SubTaskMeta{
	Name:             "Convert Deployments",
	EntryPoint:       ConvertDeployment,
	EnabledByDefault: true,
	Description:      "Convert tool layer table github_deployments into domain layer table deployment",
	DomainTypes:      []string{plugin.DOMAIN_TYPE_CICD},
	DependencyTables: []string{models.GithubDeployment{}.TableName()},
	ProductTables:    []string{devops.CicdDeploymentCommit{}.TableName(), devops.CICDDeployment{}.TableName()},
}
View Source
var ConvertIssueAssigneeMeta = plugin.SubTaskMeta{
	Name:             "Convert Issue Assignees",
	EntryPoint:       ConvertIssueAssignee,
	EnabledByDefault: true,
	Description:      "Convert tool layer table _tool_github_issue_assignees into  domain layer table issue_assignees",
	DomainTypes:      []string{plugin.DOMAIN_TYPE_TICKET},
	DependencyTables: []string{

		models.GithubIssue{}.TableName(),
		RAW_ISSUE_TABLE,
	},
	ProductTables: []string{models.GithubIssueAssignee{}.TableName()},
}
View Source
var ConvertIssueCommentsMeta = plugin.SubTaskMeta{
	Name:             "Convert Issue Comments",
	EntryPoint:       ConvertIssueComments,
	EnabledByDefault: true,
	Description:      "ConvertIssueComments data from Github api",
	DomainTypes:      []string{plugin.DOMAIN_TYPE_TICKET},
	DependencyTables: []string{
		models.GithubIssueComment{}.TableName(),
		models.GithubIssue{}.TableName(),
		models.GithubAccount{}.TableName(),
		RAW_COMMENTS_TABLE},
	ProductTables: []string{ticket.IssueComment{}.TableName()},
}
View Source
var ConvertIssueLabelsMeta = plugin.SubTaskMeta{
	Name:             "Convert Issue Labels",
	EntryPoint:       ConvertIssueLabels,
	EnabledByDefault: true,
	Description:      "Convert tool layer table github_issue_labels into  domain layer table issue_labels",
	DomainTypes:      []string{plugin.DOMAIN_TYPE_TICKET},
	DependencyTables: []string{
		models.GithubIssueLabel{}.TableName(),
		models.GithubIssue{}.TableName(),
		RAW_ISSUE_TABLE},
	ProductTables: []string{ticket.IssueLabel{}.TableName()},
}
View Source
var ConvertIssuesMeta = plugin.SubTaskMeta{
	Name:             "Convert Issues",
	EntryPoint:       ConvertIssues,
	EnabledByDefault: true,
	Description:      "Convert tool layer table github_issues into  domain layer table issues",
	DomainTypes:      []string{plugin.DOMAIN_TYPE_TICKET},
	DependencyTables: []string{
		models.GithubIssue{}.TableName(),
		models.GithubAccount{}.TableName(),

		RAW_ISSUE_TABLE},
	ProductTables: []string{
		ticket.Issue{}.TableName(),
		ticket.BoardIssue{}.TableName()},
}
View Source
var ConvertJobsMeta = plugin.SubTaskMeta{
	Name:             "Convert Jobs",
	EntryPoint:       ConvertJobs,
	EnabledByDefault: true,
	Description:      "Convert tool layer table github_jobs into  domain layer table cicd_tasks",
	DomainTypes:      []string{plugin.DOMAIN_TYPE_CICD},
	DependencyTables: []string{
		RAW_JOB_TABLE,
		models.GithubJob{}.TableName(),
		models.GithubRun{}.TableName(),
	},
	ProductTables: []string{devops.CICDTask{}.TableName()},
}
View Source
var ConvertMilestonesMeta = plugin.SubTaskMeta{
	Name:             "Convert Milestones",
	EntryPoint:       ConvertMilestones,
	EnabledByDefault: true,
	Description:      "Convert tool layer table github_milestones into  domain layer table milestones",
	DomainTypes:      []string{plugin.DOMAIN_TYPE_TICKET},
	DependencyTables: []string{
		models.GithubIssue{}.TableName(),
		models.GithubMilestone{}.TableName(),

		RAW_MILESTONE_TABLE},
	ProductTables: []string{
		ticket.Sprint{}.TableName(),
		ticket.BoardSprint{}.TableName(),
		ticket.SprintIssue{}.TableName()},
}
View Source
var ConvertPullRequestCommentsMeta = plugin.SubTaskMeta{
	Name:             "Convert PR Comments",
	EntryPoint:       ConvertPullRequestComments,
	EnabledByDefault: true,
	Description:      "ConvertPullRequestComments data from Github api",
	DomainTypes:      []string{plugin.DOMAIN_TYPE_CODE_REVIEW},
	DependencyTables: []string{
		models.GithubPrComment{}.TableName(),
		models.GithubPullRequest{}.TableName(),
		models.GithubAccount{}.TableName(),
		models.GithubPrReview{}.TableName(),
		RAW_COMMENTS_TABLE},
	ProductTables: []string{code.PullRequestComment{}.TableName()},
}
View Source
var ConvertPullRequestCommitsMeta = plugin.SubTaskMeta{
	Name:             "Convert PR Commits",
	EntryPoint:       ConvertPullRequestCommits,
	EnabledByDefault: true,
	Description:      "Convert tool layer table github_pull_request_commits into  domain layer table pull_request_commits",
	DomainTypes:      []string{plugin.DOMAIN_TYPE_CROSS, plugin.DOMAIN_TYPE_CODE_REVIEW},
	DependencyTables: []string{
		models.GithubPrCommit{}.TableName(),
		models.GithubPullRequest{}.TableName(),
		models.GithubPullRequest{}.TableName(),
		RAW_PR_COMMIT_TABLE},
	ProductTables: []string{code.PullRequestCommit{}.TableName()},
}
View Source
var ConvertPullRequestIssuesMeta = plugin.SubTaskMeta{
	Name:             "Convert PR Issues",
	EntryPoint:       ConvertPullRequestIssues,
	EnabledByDefault: true,
	Description:      "Convert tool layer table github_pull_request_issues into domain layer table pull_request_issues",
	DomainTypes:      []string{plugin.DOMAIN_TYPE_CROSS},
	DependencyTables: []string{
		models.GithubPrIssue{}.TableName(),
		models.GithubPullRequest{}.TableName(),
		RAW_PULL_REQUEST_TABLE},
	ProductTables: []string{crossdomain.PullRequestIssue{}.TableName()},
}
View Source
var ConvertPullRequestLabelsMeta = plugin.SubTaskMeta{
	Name:             "Convert PR Labels",
	EntryPoint:       ConvertPullRequestLabels,
	EnabledByDefault: true,
	Description:      "Convert tool layer table github_pull_request_labels into  domain layer table pull_request_labels",
	DomainTypes:      []string{plugin.DOMAIN_TYPE_CODE_REVIEW},
	DependencyTables: []string{
		models.GithubPrLabel{}.TableName(),
		models.GithubPullRequest{}.TableName(),
		RAW_PULL_REQUEST_TABLE},
	ProductTables: []string{code.PullRequestLabel{}.TableName()},
}
View Source
var ConvertPullRequestReviewsMeta = plugin.SubTaskMeta{
	Name:             "Convert PR Reviews",
	EntryPoint:       ConvertPullRequestReviews,
	EnabledByDefault: true,
	Description:      "ConvertPullRequestReviews data from Github api",
	DomainTypes:      []string{plugin.DOMAIN_TYPE_CODE_REVIEW},
	DependencyTables: []string{
		models.GithubPrReview{}.TableName(),
		models.GithubPullRequest{}.TableName(),
		models.GithubAccount{}.TableName(),
		RAW_PR_REVIEW_TABLE},
	ProductTables: []string{code.PullRequestComment{}.TableName()},
}
View Source
var ConvertPullRequestsMeta = plugin.SubTaskMeta{
	Name:             "Convert Pull Requests",
	EntryPoint:       ConvertPullRequests,
	EnabledByDefault: true,
	Description:      "ConvertPullRequests data from Github api",
	DomainTypes:      []string{plugin.DOMAIN_TYPE_CROSS, plugin.DOMAIN_TYPE_CODE_REVIEW},
	DependencyTables: []string{
		models.GithubPullRequest{}.TableName(),

		models.GithubAccount{}.TableName(),
		RAW_PULL_REQUEST_TABLE},
	ProductTables: []string{code.PullRequest{}.TableName()},
}
View Source
var ConvertRepoMeta = plugin.SubTaskMeta{
	Name:             "Convert Repos",
	EntryPoint:       ConvertRepo,
	EnabledByDefault: true,
	Description:      "Convert tool layer table github_repos into domain layer table repos and boards",
	DomainTypes: []string{
		plugin.DOMAIN_TYPE_CODE,
		plugin.DOMAIN_TYPE_TICKET,
		plugin.DOMAIN_TYPE_CICD,
		plugin.DOMAIN_TYPE_CODE_REVIEW,
		plugin.DOMAIN_TYPE_CROSS},
	DependencyTables: []string{},
	ProductTables: []string{
		code.Repo{}.TableName(),
		ticket.Board{}.TableName(),
		crossdomain.BoardRepo{}.TableName(),
		devops.CicdScope{}.TableName()},
}
View Source
var ConvertRunsMeta = plugin.SubTaskMeta{
	Name:             "Convert Workflow Runs",
	EntryPoint:       ConvertRuns,
	EnabledByDefault: true,
	Description:      "Convert tool layer table github_runs into  domain layer table cicd_pipeline",
	DomainTypes:      []string{plugin.DOMAIN_TYPE_CICD},
	DependencyTables: []string{

		models.GithubRun{}.TableName(),
		RAW_RUN_TABLE,
	},
	ProductTables: []string{
		devops.CICDPipeline{}.TableName(),
		devops.CiCDPipelineCommit{}.TableName(),
	},
}
View Source
var EnrichPullRequestIssuesMeta = plugin.SubTaskMeta{
	Name:             "Enrich PR Issues",
	EntryPoint:       EnrichPullRequestIssues,
	EnabledByDefault: true,
	Description:      "Create tool layer table github_pull_request_issues from github_pull_requests",
	DomainTypes:      []string{plugin.DOMAIN_TYPE_CROSS},
	DependencyTables: []string{
		models.GithubPullRequest{}.TableName(),
		RAW_PULL_REQUEST_TABLE},
	ProductTables: []string{models.GithubPrIssue{}.TableName()},
}
View Source
var ExtractAccountOrgMeta = plugin.SubTaskMeta{
	Name:             "Extract User Org",
	EntryPoint:       ExtractAccountOrg,
	EnabledByDefault: true,
	Description:      "Extract raw account org data into tool layer table github_account_orgs",
	DomainTypes:      []string{plugin.DOMAIN_TYPE_CROSS},
	DependencyTables: []string{RAW_ACCOUNT_ORG_TABLE},
	ProductTables:    []string{models.GithubAccountOrg{}.TableName()},
}
View Source
var ExtractAccountsMeta = plugin.SubTaskMeta{
	Name:             "Extract Users",
	EntryPoint:       ExtractAccounts,
	EnabledByDefault: true,
	Description:      "Extract raw account data  into tool layer table github_accounts",
	DomainTypes:      []string{plugin.DOMAIN_TYPE_CROSS},
	DependencyTables: []string{RAW_ACCOUNT_TABLE},
	ProductTables:    []string{models.GithubAccount{}.TableName()},
}
View Source
var ExtractApiCommentsMeta = plugin.SubTaskMeta{
	Name:             "Extract Comments",
	EntryPoint:       ExtractApiComments,
	EnabledByDefault: true,
	Description: "Extract raw comment data  into tool layer table github_pull_request_comments" +
		"and github_issue_comments",
	DomainTypes:      []string{plugin.DOMAIN_TYPE_CODE_REVIEW, plugin.DOMAIN_TYPE_TICKET},
	DependencyTables: []string{RAW_COMMENTS_TABLE},
	ProductTables: []string{
		models.GithubPrComment{}.TableName(),
		models.GithubIssueComment{}.TableName(),
		models.GithubRepoAccount{}.TableName()},
}
View Source
var ExtractApiCommitStatsMeta = plugin.SubTaskMeta{
	Name:             "Extract Commit Stats",
	EntryPoint:       ExtractApiCommitStats,
	EnabledByDefault: false,
	Description:      "Extract raw commit stats data into tool layer table github_commit_stats",
	DomainTypes:      []string{plugin.DOMAIN_TYPE_CODE},
	DependencyTables: []string{RAW_COMMIT_STATS_TABLE},
	ProductTables: []string{
		models.GithubCommit{}.TableName(),
		models.GithubCommitStat{}.TableName()},
}
View Source
var ExtractApiCommitsMeta = plugin.SubTaskMeta{
	Name:             "Extract Commits",
	EntryPoint:       ExtractApiCommits,
	EnabledByDefault: false,
	Description:      "Extract raw commit data into tool layer table github_commits",
	DomainTypes:      []string{plugin.DOMAIN_TYPE_CODE},
	DependencyTables: []string{RAW_COMMIT_TABLE},
	ProductTables: []string{
		models.GithubCommit{}.TableName(),
		models.GithubRepoCommit{}.TableName()},
}
View Source
var ExtractApiEventsMeta = plugin.SubTaskMeta{
	Name:             "Extract Events",
	EntryPoint:       ExtractApiEvents,
	EnabledByDefault: true,
	Description:      "Extract raw Events data into tool layer table github_issue_events",
	DomainTypes:      []string{plugin.DOMAIN_TYPE_TICKET},
	DependencyTables: []string{RAW_EVENTS_TABLE},
	ProductTables:    []string{models.GithubIssueEvent{}.TableName()},
}
View Source
var ExtractApiIssuesMeta = plugin.SubTaskMeta{
	Name:             "Extract Issues",
	EntryPoint:       ExtractApiIssues,
	EnabledByDefault: true,
	Description:      "Extract raw Issues data into tool layer table github_issues",
	DomainTypes:      []string{plugin.DOMAIN_TYPE_TICKET},
	DependencyTables: []string{RAW_ISSUE_TABLE},
	ProductTables: []string{
		models.GithubIssue{}.TableName(),
		models.GithubIssueLabel{}.TableName(),
		models.GithubRepoAccount{}.TableName(),
		models.GithubIssueAssignee{}.TableName()},
}
View Source
var ExtractApiPrReviewCommentsMeta = plugin.SubTaskMeta{
	Name:             "Extract PR Review Comments",
	EntryPoint:       ExtractApiPrReviewComments,
	EnabledByDefault: true,
	Description: "Extract raw comment data  into tool layer table github_pull_request_comments" +
		"and github_issue_comments",
	DomainTypes:      []string{plugin.DOMAIN_TYPE_CROSS, plugin.DOMAIN_TYPE_CODE_REVIEW},
	DependencyTables: []string{RAW_PR_REVIEW_COMMENTS_TABLE},
	ProductTables: []string{
		models.GithubRepoAccount{}.TableName(),
		models.GithubPrCommit{}.TableName()},
}
View Source
var ExtractApiPullRequestCommitsMeta = plugin.SubTaskMeta{
	Name:             "Extract PR Commits",
	EntryPoint:       ExtractApiPullRequestCommits,
	EnabledByDefault: true,
	Description:      "Extract raw PullRequestCommits data into tool layer table github_commits",
	DomainTypes:      []string{plugin.DOMAIN_TYPE_CROSS, plugin.DOMAIN_TYPE_CODE_REVIEW},
	DependencyTables: []string{RAW_PR_COMMIT_TABLE},
	ProductTables: []string{
		models.GithubRepoCommit{}.TableName(),
		models.GithubCommit{}.TableName(),
		models.GithubPrCommit{}.TableName()},
}
View Source
var ExtractApiPullRequestReviewsMeta = plugin.SubTaskMeta{
	Name:             "Extract PR Reviews",
	EntryPoint:       ExtractApiPullRequestReviews,
	EnabledByDefault: true,
	Description:      "Extract raw PullRequestReviewers data into tool layer table github_reviewers",
	DomainTypes:      []string{plugin.DOMAIN_TYPE_CROSS, plugin.DOMAIN_TYPE_CODE_REVIEW},
	DependencyTables: []string{RAW_PR_REVIEW_TABLE},
	ProductTables: []string{
		models.GithubRepoAccount{}.TableName(),
		models.GithubReviewer{}.TableName(),
		models.GithubPrReview{}.TableName()},
}
View Source
var ExtractApiPullRequestsMeta = plugin.SubTaskMeta{
	Name:             "Extract Pull Requests",
	EntryPoint:       ExtractApiPullRequests,
	EnabledByDefault: true,
	Description:      "Extract raw PullRequests data into tool layer table github_pull_requests",
	DomainTypes:      []string{plugin.DOMAIN_TYPE_CROSS, plugin.DOMAIN_TYPE_CODE_REVIEW},
	DependencyTables: []string{RAW_PULL_REQUEST_TABLE},
	ProductTables: []string{
		models.GithubRepoAccount{}.TableName(),
		models.GithubPrLabel{}.TableName(),
		models.GithubPullRequest{}.TableName()},
}
View Source
var ExtractJobsMeta = plugin.SubTaskMeta{
	Name:             "Extract Jobs",
	EntryPoint:       ExtractJobs,
	EnabledByDefault: true,
	Description:      "Extract raw run data into tool layer table github_jobs",
	DomainTypes:      []string{plugin.DOMAIN_TYPE_CICD},
	DependencyTables: []string{RAW_JOB_TABLE},
	ProductTables:    []string{models.GithubJob{}.TableName()},
}
View Source
var ExtractMilestonesMeta = plugin.SubTaskMeta{
	Name:             "Extract Milestones",
	EntryPoint:       ExtractMilestones,
	EnabledByDefault: true,
	Description:      "Extract raw milestone data into tool layer table github_milestones",
	DomainTypes:      []string{plugin.DOMAIN_TYPE_TICKET},
	DependencyTables: []string{RAW_MILESTONE_TABLE},
	ProductTables:    []string{models.GithubMilestone{}.TableName()},
}
View Source
var ExtractRunsMeta = plugin.SubTaskMeta{
	Name:             "Extract Workflow Runs",
	EntryPoint:       ExtractRuns,
	EnabledByDefault: true,
	Description:      "Extract raw run data into tool layer table github_runs",
	DomainTypes:      []string{plugin.DOMAIN_TYPE_CICD},
	DependencyTables: []string{RAW_RUN_TABLE},
	ProductTables:    []string{models.GithubRun{}.TableName()},
}
View Source
var SubTaskMetaList []*plugin.SubTaskMeta

Functions

func CollectAccountOrg

func CollectAccountOrg(taskCtx plugin.SubTaskContext) errors.Error

func CollectAccounts

func CollectAccounts(taskCtx plugin.SubTaskContext) errors.Error

func CollectApiComments

func CollectApiComments(taskCtx plugin.SubTaskContext) errors.Error

func CollectApiCommitStats

func CollectApiCommitStats(taskCtx plugin.SubTaskContext) errors.Error

func CollectApiCommits

func CollectApiCommits(taskCtx plugin.SubTaskContext) errors.Error

func CollectApiEvents

func CollectApiEvents(taskCtx plugin.SubTaskContext) errors.Error

func CollectApiIssues

func CollectApiIssues(taskCtx plugin.SubTaskContext) errors.Error

func CollectApiMilestones

func CollectApiMilestones(taskCtx plugin.SubTaskContext) errors.Error

func CollectApiPullRequestCommits

func CollectApiPullRequestCommits(taskCtx plugin.SubTaskContext) errors.Error

func CollectApiPullRequestReviews

func CollectApiPullRequestReviews(taskCtx plugin.SubTaskContext) errors.Error

func CollectApiPullRequests

func CollectApiPullRequests(taskCtx plugin.SubTaskContext) errors.Error

func CollectJobs

func CollectJobs(taskCtx plugin.SubTaskContext) errors.Error

func CollectPrReviewComments

func CollectPrReviewComments(taskCtx plugin.SubTaskContext) errors.Error

func CollectRuns

func CollectRuns(taskCtx plugin.SubTaskContext) errors.Error

func ConvertAccounts

func ConvertAccounts(taskCtx plugin.SubTaskContext) errors.Error

func ConvertCommits

func ConvertCommits(taskCtx plugin.SubTaskContext) errors.Error

func ConvertDeployment

func ConvertDeployment(taskCtx plugin.SubTaskContext) errors.Error

ConvertDeployment should be split into two task theoretically But in GitHub, all deployments have commits, so there is no need to change it.

func ConvertIssueAssignee

func ConvertIssueAssignee(taskCtx plugin.SubTaskContext) errors.Error

func ConvertIssueComments

func ConvertIssueComments(taskCtx plugin.SubTaskContext) errors.Error

func ConvertIssueLabels

func ConvertIssueLabels(taskCtx plugin.SubTaskContext) errors.Error

func ConvertIssues

func ConvertIssues(taskCtx plugin.SubTaskContext) errors.Error

func ConvertJobs

func ConvertJobs(taskCtx plugin.SubTaskContext) (err errors.Error)

func ConvertMilestones

func ConvertMilestones(taskCtx plugin.SubTaskContext) errors.Error

func ConvertPullRequestComments

func ConvertPullRequestComments(taskCtx plugin.SubTaskContext) errors.Error

func ConvertPullRequestCommits

func ConvertPullRequestCommits(taskCtx plugin.SubTaskContext) (err errors.Error)

func ConvertPullRequestIssues

func ConvertPullRequestIssues(taskCtx plugin.SubTaskContext) errors.Error

func ConvertPullRequestLabels

func ConvertPullRequestLabels(taskCtx plugin.SubTaskContext) errors.Error

func ConvertPullRequestReviews

func ConvertPullRequestReviews(taskCtx plugin.SubTaskContext) errors.Error

func ConvertPullRequests

func ConvertPullRequests(taskCtx plugin.SubTaskContext) errors.Error

func ConvertRepo

func ConvertRepo(taskCtx plugin.SubTaskContext) errors.Error

func ConvertRuns

func ConvertRuns(taskCtx plugin.SubTaskContext) errors.Error

func CreateApiClient

func CreateApiClient(taskCtx plugin.TaskContext, connection *models.GithubConnection) (*api.ApiAsyncClient, errors.Error)

func EnrichPullRequestIssues

func EnrichPullRequestIssues(taskCtx plugin.SubTaskContext) (err errors.Error)

func ExtractAccountOrg

func ExtractAccountOrg(taskCtx plugin.SubTaskContext) errors.Error

func ExtractAccounts

func ExtractAccounts(taskCtx plugin.SubTaskContext) errors.Error

func ExtractApiComments

func ExtractApiComments(taskCtx plugin.SubTaskContext) errors.Error

func ExtractApiCommitStats

func ExtractApiCommitStats(taskCtx plugin.SubTaskContext) errors.Error

func ExtractApiCommits

func ExtractApiCommits(taskCtx plugin.SubTaskContext) errors.Error

func ExtractApiEvents

func ExtractApiEvents(taskCtx plugin.SubTaskContext) errors.Error

func ExtractApiIssues

func ExtractApiIssues(taskCtx plugin.SubTaskContext) errors.Error

func ExtractApiPrReviewComments

func ExtractApiPrReviewComments(taskCtx plugin.SubTaskContext) errors.Error

func ExtractApiPullRequestCommits

func ExtractApiPullRequestCommits(taskCtx plugin.SubTaskContext) errors.Error

func ExtractApiPullRequestReviews

func ExtractApiPullRequestReviews(taskCtx plugin.SubTaskContext) errors.Error

func ExtractApiPullRequests

func ExtractApiPullRequests(taskCtx plugin.SubTaskContext) errors.Error

func ExtractJobs

func ExtractJobs(taskCtx plugin.SubTaskContext) errors.Error

func ExtractMilestones

func ExtractMilestones(taskCtx plugin.SubTaskContext) errors.Error

func ExtractRuns

func ExtractRuns(taskCtx plugin.SubTaskContext) errors.Error

func GetTotalPagesFromResponse

func GetTotalPagesFromResponse(res *http.Response, args *api.ApiCollectorArgs) (int, errors.Error)

func RegisterSubtaskMeta

func RegisterSubtaskMeta(meta *plugin.SubTaskMeta)

func ValidateTaskOptions

func ValidateTaskOptions(op *GithubOptions) errors.Error

Types

type ApiSingleCommitResponse

type ApiSingleCommitResponse struct {
	Sha   string
	Stats struct {
		Additions int
		Deletions int
	}
	Commit struct {
		Committer struct {
			Name  string
			Email string
			Date  common.Iso8601Time
		}
	}
}

type Commit

type Commit struct {
	Author struct {
		Name  string
		Email string
		Date  common.Iso8601Time
	}
	Committer struct {
		Name  string
		Email string
		Date  common.Iso8601Time
	}
	Message string
}

type CommitsResponse

type CommitsResponse struct {
	Sha       string `json:"sha"`
	Commit    Commit
	Url       string
	Author    *models.GithubAccount
	Committer *models.GithubAccount
}

type DetailGithubAccountResponse

type DetailGithubAccountResponse struct {
	GithubAccountResponse
	Name            string    `json:"name"`
	Company         string    `json:"company"`
	Blog            string    `json:"blog"`
	Location        string    `json:"location"`
	Email           string    `json:"email"`
	Hireable        bool      `json:"hireable"`
	Bio             string    `json:"bio"`
	TwitterUsername string    `json:"twitter_username"`
	PublicRepos     int       `json:"public_repos"`
	PublicGists     int       `json:"public_gists"`
	Followers       int       `json:"followers"`
	Following       int       `json:"following"`
	CreatedAt       time.Time `json:"created_at"`
	UpdatedAt       time.Time `json:"updated_at"`
}

type GithubAccountOrgsResponse

type GithubAccountOrgsResponse struct {
	Login       string `json:"login"`
	Id          int    `json:"id"`
	NodeId      string `json:"node_id"`
	AvatarUrl   string `json:"avatar_url"`
	Description string `json:"description"`
}

type GithubAccountResponse

type GithubAccountResponse struct {
	Login             string `json:"login"`
	Id                int    `json:"id"`
	NodeId            string `json:"node_id"`
	AvatarUrl         string `json:"avatar_url"`
	GravatarId        string `json:"gravatar_id"`
	Url               string `json:"url"`
	HtmlUrl           string `json:"html_url"`
	FollowersUrl      string `json:"followers_url"`
	FollowingUrl      string `json:"following_url"`
	GistsUrl          string `json:"gists_url"`
	StarredUrl        string `json:"starred_url"`
	SubscriptionsUrl  string `json:"subscriptions_url"`
	OrganizationsUrl  string `json:"organizations_url"`
	ReposUrl          string `json:"repos_url"`
	EventsUrl         string `json:"events_url"`
	ReceivedEventsUrl string `json:"received_events_url"`
	Type              string `json:"type"`
	SiteAdmin         bool   `json:"site_admin"`
}

type GithubAccountWithOrg

type GithubAccountWithOrg struct {
	models.GithubAccount
	Login string `json:"login" gorm:"type:varchar(255)"`
	common.NoPKModel
}

type GithubApiParams

type GithubApiParams models.GithubApiParams

TODO: avoid touching too many files, should be removed in the future

type GithubApiPullRequest

type GithubApiPullRequest struct {
	GithubId int             `json:"id"`
	Number   int             `json:"number"`
	State    string          `json:"state"`
	Title    string          `json:"title"`
	Body     json.RawMessage `json:"body"`
	HtmlUrl  string          `json:"html_url"`
	Labels   []struct {
		Name string `json:"name"`
	} `json:"labels"`
	Assignee        *GithubAccountResponse `json:"assignee"`
	User            *GithubAccountResponse `json:"user"`
	ClosedAt        *common.Iso8601Time    `json:"closed_at"`
	MergedAt        *common.Iso8601Time    `json:"merged_at"`
	GithubCreatedAt common.Iso8601Time     `json:"created_at"`
	GithubUpdatedAt common.Iso8601Time     `json:"updated_at"`
	MergeCommitSha  string                 `json:"merge_commit_sha"`
	Head            struct {
		Ref  string         `json:"ref"`
		Sha  string         `json:"sha"`
		Repo *GithubApiRepo `json:"repo"`
	} `json:"head"`
	Base struct {
		Ref  string         `json:"ref"`
		Sha  string         `json:"sha"`
		Repo *GithubApiRepo `json:"repo"`
	} `json:"base"`
}

type GithubApiRepo

type GithubApiRepo struct {
	Name        string `json:"name"`
	FullName    string `json:"full_name"`
	GithubId    int    `json:"id"`
	HTMLUrl     string `json:"html_url"`
	Language    string `json:"language"`
	Description string `json:"description"`
	Owner       *GithubAccountResponse
	Parent      *GithubApiRepo      `json:"parent"`
	CreatedAt   common.Iso8601Time  `json:"created_at"`
	UpdatedAt   *common.Iso8601Time `json:"updated_at"`
	CloneUrl    string              `json:"clone_url"`
}

type GithubOptions

type GithubOptions struct {
	ConnectionId            uint64                    `json:"connectionId" mapstructure:"connectionId,omitempty"`
	ScopeConfigId           uint64                    `json:"scopeConfigId" mapstructure:"scopeConfigId,omitempty"`
	GithubId                int                       `json:"githubId" mapstructure:"githubId,omitempty"`
	Owner                   string                    `json:"owner" mapstructure:"owner,omitempty"`
	Repo                    string                    `json:"repo"  mapstructure:"repo,omitempty"`
	Name                    string                    `json:"name"  mapstructure:"name,omitempty"`
	FullName                string                    `json:"fullName"  mapstructure:"fullName,omitempty"`
	ScopeConfig             *models.GithubScopeConfig `mapstructure:"scopeConfig,omitempty" json:"scopeConfig"`
	helper.CollectorOptions `mapstructure:",squash"`
}

func DecodeAndValidateTaskOptions

func DecodeAndValidateTaskOptions(options map[string]interface{}) (*GithubOptions, errors.Error)

func DecodeTaskOptions

func DecodeTaskOptions(options map[string]interface{}) (*GithubOptions, errors.Error)

type GithubRawJobsResult

type GithubRawJobsResult struct {
	TotalCount         int64             `json:"total_count"`
	GithubWorkflowJobs []json.RawMessage `json:"jobs"`
}

type GithubRawRunsResult

type GithubRawRunsResult struct {
	TotalCount   int `json:"total_count"`
	WorkflowRuns []struct {
		ID               int64  `json:"id"`
		Name             string `json:"name"`
		NodeID           string `json:"node_id"`
		HeadBranch       string `json:"head_branch"`
		HeadSha          string `json:"head_sha"`
		Path             string `json:"path"`
		DisplayTitle     string `json:"display_title"`
		RunNumber        int    `json:"run_number"`
		Event            string `json:"event"`
		Status           string `json:"status"`
		Conclusion       string `json:"conclusion"`
		WorkflowID       int    `json:"workflow_id"`
		CheckSuiteID     int64  `json:"check_suite_id"`
		CheckSuiteNodeID string `json:"check_suite_node_id"`
		URL              string `json:"url"`
		HTMLURL          string `json:"html_url"`
		PullRequests     []struct {
			URL    string `json:"url"`
			ID     int    `json:"id"`
			Number int    `json:"number"`
			Head   struct {
				Ref  string `json:"ref"`
				Sha  string `json:"sha"`
				Repo struct {
					ID   int    `json:"id"`
					URL  string `json:"url"`
					Name string `json:"name"`
				} `json:"repo"`
			} `json:"head"`
			Base struct {
				Ref  string `json:"ref"`
				Sha  string `json:"sha"`
				Repo struct {
					ID   int    `json:"id"`
					URL  string `json:"url"`
					Name string `json:"name"`
				} `json:"repo"`
			} `json:"base"`
		} `json:"pull_requests"`
		CreatedAt time.Time `json:"created_at"`
		UpdatedAt time.Time `json:"updated_at"`
		Actor     struct {
			Login             string `json:"login"`
			ID                int    `json:"id"`
			NodeID            string `json:"node_id"`
			AvatarURL         string `json:"avatar_url"`
			GravatarID        string `json:"gravatar_id"`
			URL               string `json:"url"`
			HTMLURL           string `json:"html_url"`
			FollowersURL      string `json:"followers_url"`
			FollowingURL      string `json:"following_url"`
			GistsURL          string `json:"gists_url"`
			StarredURL        string `json:"starred_url"`
			SubscriptionsURL  string `json:"subscriptions_url"`
			OrganizationsURL  string `json:"organizations_url"`
			ReposURL          string `json:"repos_url"`
			EventsURL         string `json:"events_url"`
			ReceivedEventsURL string `json:"received_events_url"`
			Type              string `json:"type"`
			SiteAdmin         bool   `json:"site_admin"`
		} `json:"actor"`
		RunAttempt          int       `json:"run_attempt"`
		ReferencedWorkflows []any     `json:"referenced_workflows"`
		RunStartedAt        time.Time `json:"run_started_at"`
		TriggeringActor     struct {
			Login             string `json:"login"`
			ID                int    `json:"id"`
			NodeID            string `json:"node_id"`
			AvatarURL         string `json:"avatar_url"`
			GravatarID        string `json:"gravatar_id"`
			URL               string `json:"url"`
			HTMLURL           string `json:"html_url"`
			FollowersURL      string `json:"followers_url"`
			FollowingURL      string `json:"following_url"`
			GistsURL          string `json:"gists_url"`
			StarredURL        string `json:"starred_url"`
			SubscriptionsURL  string `json:"subscriptions_url"`
			OrganizationsURL  string `json:"organizations_url"`
			ReposURL          string `json:"repos_url"`
			EventsURL         string `json:"events_url"`
			ReceivedEventsURL string `json:"received_events_url"`
			Type              string `json:"type"`
			SiteAdmin         bool   `json:"site_admin"`
		} `json:"triggering_actor"`
		JobsURL            string `json:"jobs_url"`
		LogsURL            string `json:"logs_url"`
		CheckSuiteURL      string `json:"check_suite_url"`
		ArtifactsURL       string `json:"artifacts_url"`
		CancelURL          string `json:"cancel_url"`
		RerunURL           string `json:"rerun_url"`
		PreviousAttemptURL any    `json:"previous_attempt_url"`
		WorkflowURL        string `json:"workflow_url"`
		HeadCommit         struct {
			ID        string    `json:"id"`
			TreeID    string    `json:"tree_id"`
			Message   string    `json:"message"`
			Timestamp time.Time `json:"timestamp"`
			Author    struct {
				Name  string `json:"name"`
				Email string `json:"email"`
			} `json:"author"`
			Committer struct {
				Name  string `json:"name"`
				Email string `json:"email"`
			} `json:"committer"`
		} `json:"head_commit"`
		Repository struct {
			ID       int    `json:"id"`
			NodeID   string `json:"node_id"`
			Name     string `json:"name"`
			FullName string `json:"full_name"`
			Private  bool   `json:"private"`
			Owner    struct {
				Login             string `json:"login"`
				ID                int    `json:"id"`
				NodeID            string `json:"node_id"`
				AvatarURL         string `json:"avatar_url"`
				GravatarID        string `json:"gravatar_id"`
				URL               string `json:"url"`
				HTMLURL           string `json:"html_url"`
				FollowersURL      string `json:"followers_url"`
				FollowingURL      string `json:"following_url"`
				GistsURL          string `json:"gists_url"`
				StarredURL        string `json:"starred_url"`
				SubscriptionsURL  string `json:"subscriptions_url"`
				OrganizationsURL  string `json:"organizations_url"`
				ReposURL          string `json:"repos_url"`
				EventsURL         string `json:"events_url"`
				ReceivedEventsURL string `json:"received_events_url"`
				Type              string `json:"type"`
				SiteAdmin         bool   `json:"site_admin"`
			} `json:"owner"`
			HTMLURL          string `json:"html_url"`
			Description      string `json:"description"`
			Fork             bool   `json:"fork"`
			URL              string `json:"url"`
			ForksURL         string `json:"forks_url"`
			KeysURL          string `json:"keys_url"`
			CollaboratorsURL string `json:"collaborators_url"`
			TeamsURL         string `json:"teams_url"`
			HooksURL         string `json:"hooks_url"`
			IssueEventsURL   string `json:"issue_events_url"`
			EventsURL        string `json:"events_url"`
			AssigneesURL     string `json:"assignees_url"`
			BranchesURL      string `json:"branches_url"`
			TagsURL          string `json:"tags_url"`
			BlobsURL         string `json:"blobs_url"`
			GitTagsURL       string `json:"git_tags_url"`
			GitRefsURL       string `json:"git_refs_url"`
			TreesURL         string `json:"trees_url"`
			StatusesURL      string `json:"statuses_url"`
			LanguagesURL     string `json:"languages_url"`
			StargazersURL    string `json:"stargazers_url"`
			ContributorsURL  string `json:"contributors_url"`
			SubscribersURL   string `json:"subscribers_url"`
			SubscriptionURL  string `json:"subscription_url"`
			CommitsURL       string `json:"commits_url"`
			GitCommitsURL    string `json:"git_commits_url"`
			CommentsURL      string `json:"comments_url"`
			IssueCommentURL  string `json:"issue_comment_url"`
			ContentsURL      string `json:"contents_url"`
			CompareURL       string `json:"compare_url"`
			MergesURL        string `json:"merges_url"`
			ArchiveURL       string `json:"archive_url"`
			DownloadsURL     string `json:"downloads_url"`
			IssuesURL        string `json:"issues_url"`
			PullsURL         string `json:"pulls_url"`
			MilestonesURL    string `json:"milestones_url"`
			NotificationsURL string `json:"notifications_url"`
			LabelsURL        string `json:"labels_url"`
			ReleasesURL      string `json:"releases_url"`
			DeploymentsURL   string `json:"deployments_url"`
		} `json:"repository"`
		HeadRepository struct {
			ID       int    `json:"id"`
			NodeID   string `json:"node_id"`
			Name     string `json:"name"`
			FullName string `json:"full_name"`
			Private  bool   `json:"private"`
			Owner    struct {
				Login             string `json:"login"`
				ID                int    `json:"id"`
				NodeID            string `json:"node_id"`
				AvatarURL         string `json:"avatar_url"`
				GravatarID        string `json:"gravatar_id"`
				URL               string `json:"url"`
				HTMLURL           string `json:"html_url"`
				FollowersURL      string `json:"followers_url"`
				FollowingURL      string `json:"following_url"`
				GistsURL          string `json:"gists_url"`
				StarredURL        string `json:"starred_url"`
				SubscriptionsURL  string `json:"subscriptions_url"`
				OrganizationsURL  string `json:"organizations_url"`
				ReposURL          string `json:"repos_url"`
				EventsURL         string `json:"events_url"`
				ReceivedEventsURL string `json:"received_events_url"`
				Type              string `json:"type"`
				SiteAdmin         bool   `json:"site_admin"`
			} `json:"owner"`
			HTMLURL          string `json:"html_url"`
			Description      string `json:"description"`
			Fork             bool   `json:"fork"`
			URL              string `json:"url"`
			ForksURL         string `json:"forks_url"`
			KeysURL          string `json:"keys_url"`
			CollaboratorsURL string `json:"collaborators_url"`
			TeamsURL         string `json:"teams_url"`
			HooksURL         string `json:"hooks_url"`
			IssueEventsURL   string `json:"issue_events_url"`
			EventsURL        string `json:"events_url"`
			AssigneesURL     string `json:"assignees_url"`
			BranchesURL      string `json:"branches_url"`
			TagsURL          string `json:"tags_url"`
			BlobsURL         string `json:"blobs_url"`
			GitTagsURL       string `json:"git_tags_url"`
			GitRefsURL       string `json:"git_refs_url"`
			TreesURL         string `json:"trees_url"`
			StatusesURL      string `json:"statuses_url"`
			LanguagesURL     string `json:"languages_url"`
			StargazersURL    string `json:"stargazers_url"`
			ContributorsURL  string `json:"contributors_url"`
			SubscribersURL   string `json:"subscribers_url"`
			SubscriptionURL  string `json:"subscription_url"`
			CommitsURL       string `json:"commits_url"`
			GitCommitsURL    string `json:"git_commits_url"`
			CommentsURL      string `json:"comments_url"`
			IssueCommentURL  string `json:"issue_comment_url"`
			ContentsURL      string `json:"contents_url"`
			CompareURL       string `json:"compare_url"`
			MergesURL        string `json:"merges_url"`
			ArchiveURL       string `json:"archive_url"`
			DownloadsURL     string `json:"downloads_url"`
			IssuesURL        string `json:"issues_url"`
			PullsURL         string `json:"pulls_url"`
			MilestonesURL    string `json:"milestones_url"`
			NotificationsURL string `json:"notifications_url"`
			LabelsURL        string `json:"labels_url"`
			ReleasesURL      string `json:"releases_url"`
			DeploymentsURL   string `json:"deployments_url"`
		} `json:"head_repository"`
	} `json:"workflow_runs"`
}

type GithubTaskData

type GithubTaskData struct {
	Options       *GithubOptions
	ApiClient     *helper.ApiAsyncClient
	GraphqlClient *helper.GraphqlAsyncClient
	RegexEnricher *helper.RegexEnricher
}

func CreateRawDataSubTaskArgs

func CreateRawDataSubTaskArgs(taskCtx plugin.SubTaskContext, table string) (*api.RawDataSubTaskArgs, *GithubTaskData)

type IssueComment

type IssueComment struct {
	GithubId        int `json:"id"`
	Body            json.RawMessage
	User            *GithubAccountResponse
	IssueUrl        string             `json:"issue_url"`
	GithubCreatedAt common.Iso8601Time `json:"created_at"`
	GithubUpdatedAt common.Iso8601Time `json:"updated_at"`
}

type IssueEvent

type IssueEvent struct {
	GithubId int `json:"id"`
	Event    string
	Actor    *GithubAccountResponse
	Issue    struct {
		Id int
	}
	GithubCreatedAt common.Iso8601Time `json:"created_at"`
}

type IssueRegexes

type IssueRegexes struct {
	SeverityRegex        *regexp.Regexp
	ComponentRegex       *regexp.Regexp
	PriorityRegex        *regexp.Regexp
	TypeBugRegex         *regexp.Regexp
	TypeRequirementRegex *regexp.Regexp
	TypeIncidentRegex    *regexp.Regexp
}

func NewIssueRegexes

func NewIssueRegexes(config *models.GithubScopeConfig) (*IssueRegexes, errors.Error)

type IssuesResponse

type IssuesResponse struct {
	GithubId    int `json:"id"`
	Number      int
	State       string
	Title       string
	Body        json.RawMessage
	HtmlUrl     string `json:"html_url"`
	PullRequest struct {
		Url     string `json:"url"`
		HtmlUrl string `json:"html_url"`
	} `json:"pull_request"`
	Labels []struct {
		Name string `json:"name"`
	} `json:"labels"`
	Assignee  *GithubAccountResponse  `json:"assignee"`
	Assignees []GithubAccountResponse `json:"assignees"`
	User      *GithubAccountResponse
	Milestone *struct {
		Id int
	}
	ClosedAt        *common.Iso8601Time `json:"closed_at"`
	GithubCreatedAt common.Iso8601Time  `json:"created_at"`
	GithubUpdatedAt common.Iso8601Time  `json:"updated_at"`
}

type MilestoneConverterModel

type MilestoneConverterModel struct {
	common.RawDataOrigin
	models.GithubMilestone
	GithubId int
}

type MilestonesResponse

type MilestonesResponse struct {
	Url         string `json:"url"`
	HtmlUrl     string `json:"html_url"`
	LabelsUrl   string `json:"labels_url"`
	Id          int    `json:"id"`
	NodeId      string `json:"node_id"`
	Number      int    `json:"number"`
	Title       string `json:"title"`
	Description string `json:"description"`
	Creator     struct {
		Login             string `json:"login"`
		Id                int    `json:"id"`
		NodeId            string `json:"node_id"`
		AvatarUrl         string `json:"avatar_url"`
		GravatarId        string `json:"gravatar_id"`
		Url               string `json:"url"`
		HtmlUrl           string `json:"html_url"`
		FollowersUrl      string `json:"followers_url"`
		FollowingUrl      string `json:"following_url"`
		GistsUrl          string `json:"gists_url"`
		StarredUrl        string `json:"starred_url"`
		SubscriptionsUrl  string `json:"subscriptions_url"`
		OrganizationsUrl  string `json:"organizations_url"`
		ReposUrl          string `json:"repos_url"`
		EventsUrl         string `json:"events_url"`
		ReceivedEventsUrl string `json:"received_events_url"`
		Type              string `json:"type"`
		SiteAdmin         bool   `json:"site_admin"`
	} `json:"creator"`
	OpenIssues   int                 `json:"open_issues"`
	ClosedIssues int                 `json:"closed_issues"`
	State        string              `json:"state"`
	CreatedAt    common.Iso8601Time  `json:"created_at"`
	UpdatedAt    common.Iso8601Time  `json:"updated_at"`
	DueOn        *common.Iso8601Time `json:"due_on"`
	ClosedAt     *common.Iso8601Time `json:"closed_at"`
}

type PrCommitsResponse

type PrCommitsResponse struct {
	Sha    string `json:"sha"`
	Commit PullRequestCommit
	Url    string
}

type PullRequestCommit

type PullRequestCommit struct {
	Author struct {
		Id    int
		Name  string
		Email string
		Date  common.Iso8601Time
	}
	Committer struct {
		Name  string
		Email string
		Date  common.Iso8601Time
	}
	Message json.RawMessage
}

type PullRequestReview

type PullRequestReview struct {
	GithubId    int `json:"id"`
	User        *GithubAccountResponse
	Body        string
	State       string
	CommitId    string             `json:"commit_id"`
	SubmittedAt common.Iso8601Time `json:"submitted_at"`
}

type SimpleAccount

type SimpleAccount struct {
	Login string
}

type SimpleAccountWithId

type SimpleAccountWithId struct {
	Login     string
	AccountId int
}

type SimpleBranch

type SimpleBranch struct {
	HeadBranch string `json:"head_branch" gorm:"type:varchar(255)"`
}

type SimpleGithubApiEvents

type SimpleGithubApiEvents struct {
	GithubId  int64
	CreatedAt common.Iso8601Time `json:"created_at"`
}

type SimpleGithubApiJob

type SimpleGithubApiJob struct {
	ID        int64
	CreatedAt common.Iso8601Time `json:"created_at"`
}

type SimpleGithubApiPr

type SimpleGithubApiPr struct {
	CreatedAt time.Time `json:"created_at"`
}

type SimpleGithubPr

type SimpleGithubPr struct {
	Number int64
}

type SimpleGithubRun

type SimpleGithubRun struct {
	ID int64
}

type SimplePr

type SimplePr struct {
	Number   int
	GithubId int
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL