37 lines
1.1 KiB
Go
37 lines
1.1 KiB
Go
package domain
|
|
|
|
import "context"
|
|
|
|
type EpisodeAvailability struct {
|
|
Sub []int
|
|
Dub []int
|
|
}
|
|
|
|
type EpisodeAvailabilityProvider interface {
|
|
Name() string
|
|
ResolveEpisodeProviderID(ctx context.Context, animeID int, titleCandidates []string) (string, error)
|
|
GetEpisodeAvailabilityByProviderID(ctx context.Context, providerID string) (EpisodeAvailability, error)
|
|
}
|
|
|
|
type CanonicalEpisode struct {
|
|
Number int `json:"number"`
|
|
Title string `json:"title"`
|
|
HasSub bool `json:"has_sub"`
|
|
HasDub bool `json:"has_dub"`
|
|
SubOnly bool `json:"sub_only"`
|
|
Filler bool `json:"filler"`
|
|
Recap bool `json:"recap"`
|
|
}
|
|
|
|
type CanonicalEpisodeList struct {
|
|
AnimeID int `json:"anime_id"`
|
|
Episodes []CanonicalEpisode `json:"episodes"`
|
|
Source string `json:"source"`
|
|
NextRefreshAt string `json:"next_refresh_at,omitempty"`
|
|
}
|
|
|
|
type EpisodeService interface {
|
|
GetCanonicalEpisodes(ctx context.Context, anime Anime, forceRefresh bool) (CanonicalEpisodeList, error)
|
|
RefreshTrackedDue(ctx context.Context, limit int) error
|
|
}
|