Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 16 additions & 4 deletions backend/plugins/github_graphql/tasks/job_collector.go
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,13 @@ type SimpleWorkflowRun struct {
CheckSuiteNodeID string
}

// DbCheckRun is used to store additional fields (like RunId) required for database storage
// and application logic, while embedding the GraphqlQueryCheckRun struct for API data.
type DbCheckRun struct {
RunId int // WorkflowRunId, required for DORA calculation
*GraphqlQueryCheckRun
}

var CollectJobsMeta = plugin.SubTaskMeta{
Name: "Collect Job Runs",
EntryPoint: CollectJobs,
Expand Down Expand Up @@ -188,15 +195,20 @@ func CollectJobs(taskCtx plugin.SubTaskContext) errors.Error {
ResponseParser: func(queryWrapper any) (messages []json.RawMessage, err errors.Error) {
query := queryWrapper.(*GraphqlQueryCheckRunWrapper)
for _, node := range query.Node {
runId := node.CheckSuite.WorkflowRun.DatabaseId
for _, checkRun := range node.CheckSuite.CheckRuns.Nodes {
updatedAt := checkRun.StartedAt
if checkRun.CompletedAt != nil {
updatedAt = checkRun.CompletedAt
dbCheckRun := &DbCheckRun{
RunId: runId,
GraphqlQueryCheckRun: &checkRun,
}
updatedAt := dbCheckRun.StartedAt
if dbCheckRun.CompletedAt != nil {
updatedAt = dbCheckRun.CompletedAt
}
if apiCollector.GetSince() != nil && !apiCollector.GetSince().Before(*updatedAt) {
return messages, helper.ErrFinishCollect
}
messages = append(messages, errors.Must1(json.Marshal(checkRun)))
messages = append(messages, errors.Must1(json.Marshal(dbCheckRun)))
}
}
return
Expand Down
4 changes: 2 additions & 2 deletions backend/plugins/github_graphql/tasks/job_extractor.go
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ func ExtractJobs(taskCtx plugin.SubTaskContext) errors.Error {
Table: RAW_GRAPHQL_JOBS_TABLE,
},
Extract: func(row *api.RawData) ([]interface{}, errors.Error) {
checkRun := &GraphqlQueryCheckRun{}
checkRun := &DbCheckRun{}
err := errors.Convert(json.Unmarshal(row.Data, checkRun))
if err != nil {
return nil, err
Expand All @@ -65,7 +65,7 @@ func ExtractJobs(taskCtx plugin.SubTaskContext) errors.Error {
}
githubJob := &models.GithubJob{
ConnectionId: data.Options.ConnectionId,
RunID: checkRun.DatabaseId,
RunID: checkRun.RunId,
RepoId: data.Options.GithubId,
ID: checkRun.DatabaseId,
NodeID: checkRun.Id,
Expand Down
Loading