Add hourly background refresh for stored weather data - #332
Merged
Conversation
Adds a BackgroundService that re-fetches weather for every stored address once per hour via the existing GetVisualCrossingDataQuery / SaveWeatherCommand pipeline, so cached data stays warm without waiting on a client request. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
The background service was calling GetVisualCrossingDataQuery through the mediator directly, bypassing the "weather" token-bucket policy that's only enforced on the HTTP endpoint. With more than one stored address it would burst-call the provider well past its configured limit. Space calls out using the same WeatherRateLimiterModel values so the job never exceeds what the endpoint itself would allow. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Exposes RefreshAll and the provider-call delay as internal so tests in the same assembly can exercise them directly, following the handler-test pattern already used elsewhere. Adds FakeMediator and a current FakeWeatherRepository test double (the old one in TestDoubles.cs was commented out and targeted a stale IWeatherRepository shape, so it's replaced rather than left dangling). Covers: no stored addresses, a successful refresh setting CardId before save, a non-OK provider response not triggering a save, one address throwing without blocking the rest, and calls being spaced out per address. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Closed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds a BackgroundService that re-fetches weather for every stored address once per hour via the existing GetVisualCrossingDataQuery / SaveWeatherCommand pipeline, so cached data stays warm without waiting on a client request.