All checks were successful
ci/woodpecker/push/build-image Pipeline was successful
41 lines
1.2 KiB
Go
41 lines
1.2 KiB
Go
package core
|
|
|
|
import (
|
|
"context"
|
|
|
|
"gitea.maximumdirect.net/ejr/weatherfeeder/model"
|
|
)
|
|
|
|
// Repository defines outbound data access used by weatherapi use cases.
|
|
type Repository interface {
|
|
LatestObservation(ctx context.Context) (*model.WeatherObservation, error)
|
|
LatestHourlyForecast(ctx context.Context) (*model.WeatherForecastRun, error)
|
|
LatestActiveAlerts(ctx context.Context) (*model.WeatherAlertRun, error)
|
|
CurrentConditions(ctx context.Context, observationWindowMinutes int) (*CurrentConditions, error)
|
|
}
|
|
|
|
// Service provides weather read use-cases.
|
|
type Service struct {
|
|
repo Repository
|
|
}
|
|
|
|
func NewService(repo Repository) *Service {
|
|
return &Service{repo: repo}
|
|
}
|
|
|
|
func (s *Service) LatestObservation(ctx context.Context) (*model.WeatherObservation, error) {
|
|
return s.repo.LatestObservation(ctx)
|
|
}
|
|
|
|
func (s *Service) LatestHourlyForecast(ctx context.Context) (*model.WeatherForecastRun, error) {
|
|
return s.repo.LatestHourlyForecast(ctx)
|
|
}
|
|
|
|
func (s *Service) LatestActiveAlerts(ctx context.Context) (*model.WeatherAlertRun, error) {
|
|
return s.repo.LatestActiveAlerts(ctx)
|
|
}
|
|
|
|
func (s *Service) CurrentConditions(ctx context.Context) (*CurrentConditions, error) {
|
|
return s.repo.CurrentConditions(ctx, ObservationWindowMinutesDefault)
|
|
}
|