package dashboard import ( "inbox/internal/domain/humantask" "inbox/internal/domain/lane" "inbox/internal/domain/message" "inbox/internal/domain/topic" "inbox/internal/domain/workflow" ) func filterMessagesByKnownTopics(items []message.Record, known map[string]topic.Record) map[string][]message.Record { out := make(map[string][]message.Record) for _, item := range items { if _, ok := known[item.TopicID]; !ok { continue } out[item.TopicID] = append(out[item.TopicID], item) } return out } func filterRunsByKnownTopics(items []workflow.Run, known map[string]topic.Record) map[string][]workflow.Run { out := make(map[string][]workflow.Run) for _, item := range items { if _, ok := known[item.TopicID]; !ok { continue } out[item.TopicID] = append(out[item.TopicID], item) } return out } func groupLanesByKnownTopics(items []lane.Record, known map[string]topic.Record) map[string][]lane.Record { out := make(map[string][]lane.Record) for _, item := range items { if _, ok := known[item.TopicID]; !ok { continue } out[item.TopicID] = append(out[item.TopicID], item) } return out } func groupHumanTasksByKnownTopics(items []humantask.Record, known map[string]topic.Record) map[string][]humantask.Record { out := make(map[string][]humantask.Record) for _, item := range items { if _, ok := known[item.TopicID]; !ok { continue } out[item.TopicID] = append(out[item.TopicID], item) } return out } func groupPendingDeliveriesByTopicRole(items []message.PendingDelivery, known map[string]topic.Record) map[string]map[string]int { out := make(map[string]map[string]int) for _, item := range items { if _, ok := known[item.TopicID]; !ok { continue } if out[item.TopicID] == nil { out[item.TopicID] = make(map[string]int) } out[item.TopicID][item.RoleName] += item.Count } return out } func groupPendingDeliveriesByRole(items []message.PendingDelivery, known map[string]topic.Record) map[string]int { out := make(map[string]int) for _, item := range items { if _, ok := known[item.TopicID]; !ok { continue } out[item.RoleName] += item.Count } return out } func groupPendingHumanTasksByTopicRole(items []humantask.Record, known map[string]topic.Record) map[string]map[string]int { out := make(map[string]map[string]int) for _, item := range items { if _, ok := known[item.TopicID]; !ok { continue } if out[item.TopicID] == nil { out[item.TopicID] = make(map[string]int) } out[item.TopicID][item.RoleName]++ } return out } func groupPendingHumanTasksByRole(items []humantask.Record, known map[string]topic.Record) map[string]int { out := make(map[string]int) for _, item := range items { if _, ok := known[item.TopicID]; !ok { continue } out[item.RoleName]++ } return out } func latestRunTime(item *workflow.Run) string { if item == nil { return "" } return latestString(item.CompletedAt, item.StartedAt) } func latestString(values ...string) string { var best string for _, value := range values { if value > best { best = value } } return best } func coalesce(value, fallback string) string { if value != "" { return value } return fallback }