diff --git a/internal/db/querier.go b/internal/db/querier.go index f6521f6..5753c8e 100644 --- a/internal/db/querier.go +++ b/internal/db/querier.go @@ -15,6 +15,7 @@ type Querier interface { CreateSession(ctx context.Context, arg CreateSessionParams) (Session, error) DeleteAnimeFetchRetry(ctx context.Context, animeID int64) error DeleteContinueWatchingEntry(ctx context.Context, arg DeleteContinueWatchingEntryParams) error + DeleteExpiredFailedEpisodeProviderMappings(ctx context.Context) error DeleteExpiredJikanCache(ctx context.Context) error DeleteSession(ctx context.Context, id string) error DeleteWatchListEntry(ctx context.Context, arg DeleteWatchListEntryParams) error diff --git a/internal/db/queries.sql b/internal/db/queries.sql index 000f449..03ccc29 100644 --- a/internal/db/queries.sql +++ b/internal/db/queries.sql @@ -333,6 +333,11 @@ SELECT anime_id, provider, provider_show_id, failed_until, last_error, updated_a FROM episode_provider_mapping WHERE anime_id = ? AND provider = ? LIMIT 1; +-- name: DeleteExpiredFailedEpisodeProviderMappings :exec +DELETE FROM episode_provider_mapping +WHERE provider_show_id = '' + AND failed_until <= CURRENT_TIMESTAMP; + -- name: GetTrackedAiringAnimeIDsDueForEpisodeRefresh :many WITH tracked AS ( SELECT DISTINCT w.anime_id diff --git a/internal/db/queries.sql.go b/internal/db/queries.sql.go index d84cf87..025f1d3 100644 --- a/internal/db/queries.sql.go +++ b/internal/db/queries.sql.go @@ -149,6 +149,17 @@ func (q *Queries) DeleteContinueWatchingEntry(ctx context.Context, arg DeleteCon return err } +const deleteExpiredFailedEpisodeProviderMappings = `-- name: DeleteExpiredFailedEpisodeProviderMappings :exec +DELETE FROM episode_provider_mapping +WHERE provider_show_id = '' + AND failed_until <= CURRENT_TIMESTAMP +` + +func (q *Queries) DeleteExpiredFailedEpisodeProviderMappings(ctx context.Context) error { + _, err := q.db.ExecContext(ctx, deleteExpiredFailedEpisodeProviderMappings) + return err +} + const deleteExpiredJikanCache = `-- name: DeleteExpiredJikanCache :exec DELETE FROM jikan_cache WHERE datetime(expires_at) <= CURRENT_TIMESTAMP `