feat: wire title provider and singleflight into episode service

This commit is contained in:
2026-07-06 07:36:46 +02:00
parent f3b6489d03
commit 51bdf5c53a

View File

@@ -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,
} }