package report import ( "time" "gitea.maximumdirect.net/eric/weatherreporter/internal/module" "gitea.maximumdirect.net/eric/weatherreporter/internal/timeutil" ) func threeDayDefinition() Definition { return Definition{ ID: ThreeDay, Name: "3-Day Outlook", PromptID: "weather.three_day_outlook", GenerationMode: GenerationModeScriptoriumMarkdown, ComparisonStrategy: CompareSameValidDate, ArtifactGroup: "three-day", BatchOutputName: "three-day.md", DistributorPathTemplates: []string{ "three-day/{valid_start_date}/{run_id}.md", "three-day/{valid_start_date}/index.md", }, Generated: true, CompatiblePriorIDs: []ID{ThreeDay}, Modules: threeDayModules(), Morning: true, resolve: resolveThreeDay, } } func threeDayModules() []module.ConfigItem { return moduleItems( module.Metadata, module.CurrentConditions, module.DerivedDaypartSummaries, module.PrecipTiming, module.AlertDigest, module.SPCConvectiveOutlooks, module.AreaForecastDiscussion, module.SPCConvectiveDiscussion, module.WeatherStory, module.OutdoorWindows, ) } func resolveThreeDay(req ResolveRequest) (timeutil.Period, error) { localNow := req.Now.In(req.Location) endDate := localNow.AddDate(0, 0, 3) end := time.Date(endDate.Year(), endDate.Month(), endDate.Day(), 0, 0, 0, 0, req.Location) return timeutil.Period{Start: localNow, End: end}, nil }