Initial MVP commit
This commit is contained in:
35
internal/core/service.go
Normal file
35
internal/core/service.go
Normal file
@@ -0,0 +1,35 @@
|
||||
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)
|
||||
}
|
||||
|
||||
// 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)
|
||||
}
|
||||
Reference in New Issue
Block a user