feat: wire title provider and singleflight into episode service
This commit is contained in:
@@ -10,6 +10,8 @@ import (
|
|||||||
"mal/internal/db"
|
"mal/internal/db"
|
||||||
"mal/internal/domain"
|
"mal/internal/domain"
|
||||||
"mal/internal/observability"
|
"mal/internal/observability"
|
||||||
|
|
||||||
|
"golang.org/x/sync/singleflight"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Clock interface {
|
type Clock interface {
|
||||||
@@ -24,19 +26,22 @@ type EpisodeService struct {
|
|||||||
queries *db.Queries
|
queries *db.Queries
|
||||||
jikan *jikan.Client
|
jikan *jikan.Client
|
||||||
providers []domain.EpisodeAvailabilityProvider
|
providers []domain.EpisodeAvailabilityProvider
|
||||||
|
titles domain.EpisodeTitleProvider
|
||||||
clock Clock
|
clock Clock
|
||||||
enabled bool
|
enabled bool
|
||||||
|
titleLoad singleflight.Group
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewEpisodeService(queries *db.Queries, jikanClient *jikan.Client, providers []domain.EpisodeAvailabilityProvider, enabled bool) domain.EpisodeService {
|
func NewEpisodeService(queries *db.Queries, jikanClient *jikan.Client, providers []domain.EpisodeAvailabilityProvider, titles domain.EpisodeTitleProvider, enabled bool) domain.EpisodeService {
|
||||||
return NewEpisodeServiceWithClock(queries, jikanClient, providers, enabled, realClock{})
|
return NewEpisodeServiceWithClock(queries, jikanClient, providers, titles, enabled, realClock{})
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewEpisodeServiceWithClock(queries *db.Queries, jikanClient *jikan.Client, providers []domain.EpisodeAvailabilityProvider, enabled bool, clock Clock) *EpisodeService {
|
func NewEpisodeServiceWithClock(queries *db.Queries, jikanClient *jikan.Client, providers []domain.EpisodeAvailabilityProvider, titles domain.EpisodeTitleProvider, enabled bool, clock Clock) *EpisodeService {
|
||||||
return &EpisodeService{
|
return &EpisodeService{
|
||||||
queries: queries,
|
queries: queries,
|
||||||
jikan: jikanClient,
|
jikan: jikanClient,
|
||||||
providers: providers,
|
providers: providers,
|
||||||
|
titles: titles,
|
||||||
clock: clock,
|
clock: clock,
|
||||||
enabled: enabled,
|
enabled: enabled,
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user