mirror of
https://github.com/AmanTahiliani/box-box.git
synced 2026-08-07 19:56:18 -04:00
Add local-first race hub API
This commit is contained in:
66
internal/query/metadata.go
Normal file
66
internal/query/metadata.go
Normal file
@@ -0,0 +1,66 @@
|
||||
package query
|
||||
|
||||
const (
|
||||
DatasetStatusAvailable = "available"
|
||||
DatasetStatusMissing = "missing"
|
||||
|
||||
DataSourceLocal = "local"
|
||||
DataSourceNone = "none"
|
||||
DataSourceOpenF1 = "openf1"
|
||||
|
||||
ResponseSourceLocal = "local"
|
||||
ResponseSourceNone = "none"
|
||||
ResponseSourcePartial = "partial"
|
||||
)
|
||||
|
||||
// DatasetInfo describes availability of a single dataset.
|
||||
type DatasetInfo struct {
|
||||
Status string `json:"status"`
|
||||
Source string `json:"source"`
|
||||
Count int `json:"count,omitempty"`
|
||||
}
|
||||
|
||||
func availableLocal(count int) DatasetInfo {
|
||||
return DatasetInfo{
|
||||
Status: DatasetStatusAvailable,
|
||||
Source: DataSourceLocal,
|
||||
Count: count,
|
||||
}
|
||||
}
|
||||
|
||||
func missingDataset() DatasetInfo {
|
||||
return DatasetInfo{
|
||||
Status: DatasetStatusMissing,
|
||||
Source: DataSourceNone,
|
||||
Count: 0,
|
||||
}
|
||||
}
|
||||
|
||||
func responseSource(datasets map[string]DatasetInfo) string {
|
||||
if len(datasets) == 0 {
|
||||
return ResponseSourceNone
|
||||
}
|
||||
|
||||
hasLocal := false
|
||||
allMissing := true
|
||||
for _, info := range datasets {
|
||||
if info.Status == DatasetStatusAvailable && info.Source == DataSourceLocal {
|
||||
hasLocal = true
|
||||
allMissing = false
|
||||
} else if info.Status == DatasetStatusAvailable {
|
||||
allMissing = false
|
||||
}
|
||||
}
|
||||
if allMissing {
|
||||
return ResponseSourceNone
|
||||
}
|
||||
if hasLocal {
|
||||
for _, info := range datasets {
|
||||
if info.Status == DatasetStatusMissing {
|
||||
return ResponseSourcePartial
|
||||
}
|
||||
}
|
||||
return ResponseSourceLocal
|
||||
}
|
||||
return ResponseSourceNone
|
||||
}
|
||||
Reference in New Issue
Block a user