60 lines
1.6 KiB
Go
60 lines
1.6 KiB
Go
package convert
|
|
|
|
import (
|
|
"strings"
|
|
|
|
"github.com/traggo/server/generated/gqlmodel"
|
|
"github.com/traggo/server/model"
|
|
)
|
|
|
|
func toExternalEntries(entries []model.DashboardEntry) ([]*gqlmodel.DashboardEntry, error) {
|
|
result := []*gqlmodel.DashboardEntry{}
|
|
for _, entry := range entries {
|
|
converted, err := ToExternalEntry(entry)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
result = append(result, converted)
|
|
}
|
|
return result, nil
|
|
}
|
|
|
|
// ToExternalEntry converts entries.
|
|
func ToExternalEntry(entry model.DashboardEntry) (*gqlmodel.DashboardEntry, error) {
|
|
mobilePosition, err := toExternalPosition(entry.MobilePosition)
|
|
if err != nil {
|
|
return &gqlmodel.DashboardEntry{}, err
|
|
}
|
|
desktopPos, err := toExternalPosition(entry.DesktopPosition)
|
|
if err != nil {
|
|
return &gqlmodel.DashboardEntry{}, err
|
|
}
|
|
pos := gqlmodel.ResponsiveDashboardEntryPos{
|
|
Mobile: enhancePos(mobilePosition, "mobile"),
|
|
Desktop: enhancePos(desktopPos, "desktop"),
|
|
}
|
|
dateRange := &gqlmodel.RelativeOrStaticRange{
|
|
From: entry.RangeFrom,
|
|
To: entry.RangeTo,
|
|
}
|
|
stats := &gqlmodel.StatsSelection{
|
|
Interval: ExternalInterval(entry.Interval),
|
|
Tags: strings.Split(entry.Keys, ","),
|
|
Range: dateRange,
|
|
ExcludeTags: tagFiltersToExternal(entry.TagFilters, false),
|
|
IncludeTags: tagFiltersToExternal(entry.TagFilters, true),
|
|
}
|
|
if entry.RangeID != model.NoRangeIDDefined {
|
|
stats.RangeID = &entry.RangeID
|
|
stats.Range = nil
|
|
}
|
|
return &gqlmodel.DashboardEntry{
|
|
ID: entry.ID,
|
|
Title: entry.Title,
|
|
Total: entry.Total,
|
|
Pos: &pos,
|
|
StatsSelection: stats,
|
|
EntryType: ExternalEntryType(entry.Type),
|
|
}, nil
|
|
}
|