chore(repo): reinitialize repository
This commit is contained in:
@@ -0,0 +1,87 @@
|
||||
package dashboard
|
||||
|
||||
import (
|
||||
"sort"
|
||||
"strings"
|
||||
|
||||
"inbox/internal/domain/message"
|
||||
"inbox/internal/domain/topic"
|
||||
"inbox/internal/domain/workflow"
|
||||
)
|
||||
|
||||
func latestMessageID(items []message.Record) string {
|
||||
var latest message.Record
|
||||
for _, item := range items {
|
||||
if item.CreatedAt > latest.CreatedAt || (item.CreatedAt == latest.CreatedAt && item.ID > latest.ID) {
|
||||
latest = item
|
||||
}
|
||||
}
|
||||
return latest.ID
|
||||
}
|
||||
|
||||
func latestMessageTime(items []message.Record) string {
|
||||
var latest message.Record
|
||||
for _, item := range items {
|
||||
if item.CreatedAt > latest.CreatedAt || (item.CreatedAt == latest.CreatedAt && item.ID > latest.ID) {
|
||||
latest = item
|
||||
}
|
||||
}
|
||||
return latest.CreatedAt
|
||||
}
|
||||
|
||||
func latestTopicTime(record topic.Record, messages []message.Record, runs []workflow.Run) string {
|
||||
value := record.UpdatedAt
|
||||
for _, item := range messages {
|
||||
value = latestString(value, item.CreatedAt)
|
||||
}
|
||||
for _, item := range runs {
|
||||
value = latestString(value, latestRunTime(&item))
|
||||
}
|
||||
return value
|
||||
}
|
||||
|
||||
func latestTopicStage(record topic.Record, messages []message.Record, runs []workflow.Run) string {
|
||||
stage := record.Status
|
||||
timestamp := record.UpdatedAt
|
||||
for _, item := range messages {
|
||||
if item.Stage != "" && item.CreatedAt >= timestamp {
|
||||
stage = item.Stage
|
||||
timestamp = item.CreatedAt
|
||||
}
|
||||
}
|
||||
for _, item := range runs {
|
||||
runTime := latestRunTime(&item)
|
||||
if runTime >= timestamp {
|
||||
stage = string(item.Stage)
|
||||
timestamp = runTime
|
||||
}
|
||||
}
|
||||
return stage
|
||||
}
|
||||
|
||||
func topicStages(record topic.Record, messages []message.Record, runs []workflow.Run) []string {
|
||||
seen := make(map[string]struct{})
|
||||
add := func(value string) {
|
||||
value = strings.TrimSpace(value)
|
||||
if value == "" {
|
||||
return
|
||||
}
|
||||
if _, ok := seen[value]; ok {
|
||||
return
|
||||
}
|
||||
seen[value] = struct{}{}
|
||||
}
|
||||
add(record.Status)
|
||||
for _, item := range messages {
|
||||
add(item.Stage)
|
||||
}
|
||||
for _, item := range runs {
|
||||
add(string(item.Stage))
|
||||
}
|
||||
out := make([]string, 0, len(seen))
|
||||
for value := range seen {
|
||||
out = append(out, value)
|
||||
}
|
||||
sort.Strings(out)
|
||||
return out
|
||||
}
|
||||
Reference in New Issue
Block a user