package briefing type factRequirementCategory string const ( collectedFactRequirement factRequirementCategory = "collected" derivedFactRequirement factRequirementCategory = "derived" ) type factRequirement struct { identity string category factRequirementCategory available func(ModuleContext) bool } func (r factRequirement) String() string { return r.identity } var ( 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, 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{ currentConditionsRequirement, narrativeForecastRequirement, hourlyForecastRequirement, alertsRequirement, discussionRequirement, weatherStoryRequirement, spcOutlooksRequirement, sourceMetadataRequirement, hourlyPeriodsRequirement, narrativePeriodsRequirement, alertOverlapsRequirement, dailySummariesRequirement, daypartSummariesRequirement, precipTimingRequirement, spcDerivedOutlooksRequirement, }