MCPcopy Create free account
hub / github.com/bytebase/bytebase / buildRolloutStageSummaries

Function buildRolloutStageSummaries

backend/api/v1/plan_service.go:958–1008  ·  view source on GitHub ↗
(projectID string, planUID int64, counts []*store.TaskStatusCount, environmentOrderMap map[string]int)

Source from the content-addressed store, hash-verified

956}
957
958func buildRolloutStageSummaries(projectID string, planUID int64, counts []*store.TaskStatusCount, environmentOrderMap map[string]int) []*v1pb.Plan_RolloutStageSummary {
959 summariesByEnvironment := make(map[string]map[v1pb.Task_Status]int32)
960 for _, count := range counts {
961 if _, exists := environmentOrderMap[count.Environment]; !exists {
962 continue
963 }
964 status, ok := convertTaskRunStatusStringToAPITaskStatus(count.Status)
965 if !ok {
966 continue
967 }
968 if _, exists := summariesByEnvironment[count.Environment]; !exists {
969 summariesByEnvironment[count.Environment] = make(map[v1pb.Task_Status]int32)
970 }
971 summariesByEnvironment[count.Environment][status] += count.Count
972 }
973
974 environments := make([]string, 0, len(summariesByEnvironment))
975 for environment := range summariesByEnvironment {
976 environments = append(environments, environment)
977 }
978 slices.SortFunc(environments, func(a, b string) int {
979 return environmentOrderMap[a] - environmentOrderMap[b]
980 })
981
982 summaries := make([]*v1pb.Plan_RolloutStageSummary, 0, len(environments))
983 for _, environment := range environments {
984 stageID := common.FormatStageID(environment)
985 statusCounts := make([]*v1pb.Plan_TaskStatusCount, 0, len(summariesByEnvironment[environment]))
986 for _, status := range []v1pb.Task_Status{
987 v1pb.Task_NOT_STARTED,
988 v1pb.Task_PENDING,
989 v1pb.Task_RUNNING,
990 v1pb.Task_DONE,
991 v1pb.Task_FAILED,
992 v1pb.Task_CANCELED,
993 v1pb.Task_SKIPPED,
994 } {
995 if count, exists := summariesByEnvironment[environment][status]; exists {
996 statusCounts = append(statusCounts, &v1pb.Plan_TaskStatusCount{
997 Status: status,
998 Count: count,
999 })
1000 }
1001 }
1002 summaries = append(summaries, &v1pb.Plan_RolloutStageSummary{
1003 Stage: common.FormatStage(projectID, planUID, stageID),
1004 TaskStatusCounts: statusCounts,
1005 })
1006 }
1007 return summaries
1008}
1009
1010func convertTaskRunStatusStringToAPITaskStatus(status string) (v1pb.Task_Status, bool) {
1011 switch status {

Callers 1

convertToPlansFunction · 0.85

Calls 3

FormatStageIDFunction · 0.92
FormatStageFunction · 0.92

Tested by

no test coverage detected