Validate fact requirements through briefing vocabulary
This commit is contained in:
@@ -8,8 +8,9 @@ const (
|
||||
)
|
||||
|
||||
type factRequirement struct {
|
||||
identity string
|
||||
category factRequirementCategory
|
||||
identity string
|
||||
category factRequirementCategory
|
||||
available func(ModuleContext) bool
|
||||
}
|
||||
|
||||
func (r factRequirement) String() string {
|
||||
@@ -17,25 +18,55 @@ func (r factRequirement) String() string {
|
||||
}
|
||||
|
||||
var (
|
||||
currentConditionsRequirement = factRequirement{identity: "collected.current_conditions", category: collectedFactRequirement}
|
||||
narrativeForecastRequirement = factRequirement{identity: "collected.narrative_forecast", category: collectedFactRequirement}
|
||||
hourlyForecastRequirement = factRequirement{identity: "collected.hourly_forecast", category: collectedFactRequirement}
|
||||
alertsRequirement = factRequirement{identity: "collected.alerts", category: collectedFactRequirement}
|
||||
discussionRequirement = factRequirement{identity: "collected.discussion", category: collectedFactRequirement}
|
||||
weatherStoryRequirement = factRequirement{identity: "collected.weather_story", category: collectedFactRequirement}
|
||||
spcOutlooksRequirement = factRequirement{identity: "collected.spc_convective_outlooks", category: collectedFactRequirement}
|
||||
sourceMetadataRequirement = factRequirement{identity: "collected.source_metadata", category: collectedFactRequirement}
|
||||
currentConditionsRequirement = &factRequirement{identity: "collected.current_conditions", category: collectedFactRequirement, available: func(ctx ModuleContext) bool {
|
||||
return ctx.Collected.Current != nil
|
||||
}}
|
||||
narrativeForecastRequirement = &factRequirement{identity: "collected.narrative_forecast", category: collectedFactRequirement, available: func(ctx ModuleContext) bool {
|
||||
return ctx.Collected.Narrative != nil
|
||||
}}
|
||||
hourlyForecastRequirement = &factRequirement{identity: "collected.hourly_forecast", category: collectedFactRequirement, available: func(ctx ModuleContext) bool {
|
||||
return ctx.Collected.Hourly != nil
|
||||
}}
|
||||
alertsRequirement = &factRequirement{identity: "collected.alerts", category: collectedFactRequirement, available: func(ctx ModuleContext) bool {
|
||||
return ctx.Collected.Alerts != nil
|
||||
}}
|
||||
discussionRequirement = &factRequirement{identity: "collected.discussion", category: collectedFactRequirement, available: func(ctx ModuleContext) bool {
|
||||
return ctx.Collected.Discussion != nil
|
||||
}}
|
||||
weatherStoryRequirement = &factRequirement{identity: "collected.weather_story", category: collectedFactRequirement, available: func(ctx ModuleContext) bool {
|
||||
return ctx.Collected.WeatherStory != nil
|
||||
}}
|
||||
spcOutlooksRequirement = &factRequirement{identity: "collected.spc_convective_outlooks", category: collectedFactRequirement, available: func(ctx ModuleContext) bool {
|
||||
return ctx.Collected.SPCConvectiveOutlooks != nil
|
||||
}}
|
||||
sourceMetadataRequirement = &factRequirement{identity: "collected.source_metadata", category: collectedFactRequirement, available: func(ctx ModuleContext) bool {
|
||||
return len(ctx.Collected.SourceProvenance) > 0 || len(ctx.Collected.SourceWarnings) > 0
|
||||
}}
|
||||
|
||||
hourlyPeriodsRequirement = factRequirement{identity: "derived.hourly_periods", category: derivedFactRequirement}
|
||||
narrativePeriodsRequirement = factRequirement{identity: "derived.narrative_periods", category: derivedFactRequirement}
|
||||
alertOverlapsRequirement = factRequirement{identity: "derived.alert_overlaps", category: derivedFactRequirement}
|
||||
dailySummariesRequirement = factRequirement{identity: "derived.daily_summaries", category: derivedFactRequirement}
|
||||
daypartSummariesRequirement = factRequirement{identity: "derived.daypart_summaries", category: derivedFactRequirement}
|
||||
precipTimingRequirement = factRequirement{identity: "derived.precip_timing", category: derivedFactRequirement}
|
||||
spcDerivedOutlooksRequirement = factRequirement{identity: "derived.spc_convective_outlooks", category: derivedFactRequirement}
|
||||
hourlyPeriodsRequirement = &factRequirement{identity: "derived.hourly_periods", category: derivedFactRequirement, available: func(ctx ModuleContext) bool {
|
||||
return len(ctx.Derived.ValidPeriodHourlyPeriods) > 0
|
||||
}}
|
||||
narrativePeriodsRequirement = &factRequirement{identity: "derived.narrative_periods", category: derivedFactRequirement, available: func(ctx ModuleContext) bool {
|
||||
return len(ctx.Derived.ValidPeriodNarrativePeriods) > 0
|
||||
}}
|
||||
alertOverlapsRequirement = &factRequirement{identity: "derived.alert_overlaps", category: derivedFactRequirement, available: func(ModuleContext) bool {
|
||||
return true
|
||||
}}
|
||||
dailySummariesRequirement = &factRequirement{identity: "derived.daily_summaries", category: derivedFactRequirement, available: func(ctx ModuleContext) bool {
|
||||
return len(ctx.Derived.DailySummaries) > 0
|
||||
}}
|
||||
daypartSummariesRequirement = &factRequirement{identity: "derived.daypart_summaries", category: derivedFactRequirement, available: func(ctx ModuleContext) bool {
|
||||
return len(ctx.Derived.DaypartSummaries) > 0
|
||||
}}
|
||||
precipTimingRequirement = &factRequirement{identity: "derived.precip_timing", category: derivedFactRequirement, available: func(ModuleContext) bool {
|
||||
return true
|
||||
}}
|
||||
spcDerivedOutlooksRequirement = &factRequirement{identity: "derived.spc_convective_outlooks", category: derivedFactRequirement, available: func(ctx ModuleContext) bool {
|
||||
return ctx.Derived.SPCConvectiveOutlooks != nil
|
||||
}}
|
||||
)
|
||||
|
||||
var factRequirementVocabulary = []factRequirement{
|
||||
var factRequirementVocabulary = []*factRequirement{
|
||||
currentConditionsRequirement,
|
||||
narrativeForecastRequirement,
|
||||
hourlyForecastRequirement,
|
||||
|
||||
Reference in New Issue
Block a user