feat(explore): backfill owned artists' discographies offline post-scan
Enrich owned artists whose discography hasn't been fetched yet in a bounded, resumable background pass so their wider catalogue is searchable offline right after a scan, instead of only on first artist-page view. Keyed off the persistent discog_fetched flag via LEFT JOIN, so already- enriched artists never reappear and the run is a cheap no-op once every owned artist is covered. Capped at discogBackfillMaxPerRun per run and routed through discogSF to avoid double-fetching an artist a concurrent interactive EnsureArtistDiscography is handling. Invoked on both scan completion (OnStartup) and OnDomReady to resume a capped/interrupted run. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -253,6 +253,12 @@ func (yj *YellowJacketApp) OnStartup(ctx context.Context) {
|
||||
// with no API calls. Deep discographies stay lazy.
|
||||
yj.explore.PopulateLocalCrossReferences()
|
||||
|
||||
// Enrich any owned artists whose discography hasn't been
|
||||
// fetched yet so their wider catalogue is searchable offline
|
||||
// right after the scan. Background, bounded, resumable, and a
|
||||
// no-op once every owned artist is covered.
|
||||
yj.explore.BackfillLibraryDiscographies()
|
||||
|
||||
// Start (or resume) the dump-based index build. Skips
|
||||
// itself once the one-time import has completed, so this
|
||||
// is cheap on every startup.
|
||||
@@ -438,6 +444,11 @@ func (yj *YellowJacketApp) OnDomReady(ctx context.Context) {
|
||||
// to fill any remaining gaps.
|
||||
yj.explore.RebuildLyricsIndexIfNeeded()
|
||||
yj.explore.BackfillLibraryLyrics()
|
||||
|
||||
// Continue enriching any owned artists still missing their
|
||||
// discography (e.g. a prior run was capped or interrupted).
|
||||
// Cheap no-op once every owned artist is covered.
|
||||
yj.explore.BackfillLibraryDiscographies()
|
||||
}
|
||||
|
||||
// Kick off the autotag prefetch worker so any unscored
|
||||
|
||||
Reference in New Issue
Block a user