From 51bdf5c53a0dd56ad556e6a4ac4f3122a9111909 Mon Sep 17 00:00:00 2001 From: mkelvers Date: Mon, 6 Jul 2026 07:36:46 +0200 Subject: [PATCH] feat: wire title provider and singleflight into episode service --- internal/episodes/service/service.go | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/internal/episodes/service/service.go b/internal/episodes/service/service.go index 6271c74f..99813c78 100644 --- a/internal/episodes/service/service.go +++ b/internal/episodes/service/service.go @@ -10,6 +10,8 @@ import ( "mal/internal/db" "mal/internal/domain" "mal/internal/observability" + + "golang.org/x/sync/singleflight" ) type Clock interface { @@ -24,19 +26,22 @@ type EpisodeService struct { queries *db.Queries jikan *jikan.Client providers []domain.EpisodeAvailabilityProvider + titles domain.EpisodeTitleProvider clock Clock enabled bool + titleLoad singleflight.Group } -func NewEpisodeService(queries *db.Queries, jikanClient *jikan.Client, providers []domain.EpisodeAvailabilityProvider, enabled bool) domain.EpisodeService { - return NewEpisodeServiceWithClock(queries, jikanClient, providers, enabled, realClock{}) +func NewEpisodeService(queries *db.Queries, jikanClient *jikan.Client, providers []domain.EpisodeAvailabilityProvider, titles domain.EpisodeTitleProvider, enabled bool) domain.EpisodeService { + 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{ queries: queries, jikan: jikanClient, providers: providers, + titles: titles, clock: clock, enabled: enabled, }