From 2872d14a8aa8a12ce5ae257a5e7f8935a162b9ec Mon Sep 17 00:00:00 2001 From: Claudio Ortolina Date: Sat, 14 Feb 2026 12:09:06 +0000 Subject: [PATCH] Refresh all data at the beginning of the month --- config/config.exs | 8 ++++++-- .../worker/artist_refresh_all_discogs_data.ex | 10 ++++++++++ .../worker/artist_refresh_all_musicbrainz_data.ex | 10 ++++++++++ .../worker/artist_refresh_all_wikipedia_data.ex | 10 ++++++++++ .../worker/record_generate_all_embeddings.ex | 10 ++++++++++ 5 files changed, 46 insertions(+), 2 deletions(-) create mode 100644 lib/music_library/worker/artist_refresh_all_discogs_data.ex create mode 100644 lib/music_library/worker/artist_refresh_all_musicbrainz_data.ex create mode 100644 lib/music_library/worker/artist_refresh_all_wikipedia_data.ex create mode 100644 lib/music_library/worker/record_generate_all_embeddings.ex diff --git a/config/config.exs b/config/config.exs index 0206dbd3..643c35fe 100644 --- a/config/config.exs +++ b/config/config.exs @@ -96,8 +96,12 @@ config :music_library, Oban, {"0 3 * * *", MusicLibrary.Worker.RepoVacuum}, # every day at 4 am, {"0 4 * * *", MusicLibrary.Worker.RepoOptimize}, - # every first day of the month at 6 am, - {"0 6 1 * *", MusicLibrary.Worker.RecordRefreshAllMusicBrainzData} + # every first day of the month, staggered hourly + {"0 6 1 * *", MusicLibrary.Worker.RecordRefreshAllMusicBrainzData}, + {"0 7 1 * *", MusicLibrary.Worker.RecordGenerateAllEmbeddings}, + {"0 8 1 * *", MusicLibrary.Worker.ArtistRefreshAllMusicBrainzData}, + {"0 9 1 * *", MusicLibrary.Worker.ArtistRefreshAllDiscogsData}, + {"0 10 1 * *", MusicLibrary.Worker.ArtistRefreshAllWikipediaData} ]} ] diff --git a/lib/music_library/worker/artist_refresh_all_discogs_data.ex b/lib/music_library/worker/artist_refresh_all_discogs_data.ex new file mode 100644 index 00000000..ba979317 --- /dev/null +++ b/lib/music_library/worker/artist_refresh_all_discogs_data.ex @@ -0,0 +1,10 @@ +defmodule MusicLibrary.Worker.ArtistRefreshAllDiscogsData do + use Oban.Worker, queue: :discogs, max_attempts: 3 + + alias MusicLibrary.Artists + + @impl Oban.Worker + def perform(%Oban.Job{}) do + Artists.Batch.refresh_discogs_data() + end +end diff --git a/lib/music_library/worker/artist_refresh_all_musicbrainz_data.ex b/lib/music_library/worker/artist_refresh_all_musicbrainz_data.ex new file mode 100644 index 00000000..296772bf --- /dev/null +++ b/lib/music_library/worker/artist_refresh_all_musicbrainz_data.ex @@ -0,0 +1,10 @@ +defmodule MusicLibrary.Worker.ArtistRefreshAllMusicBrainzData do + use Oban.Worker, queue: :music_brainz, max_attempts: 3 + + alias MusicLibrary.Artists + + @impl Oban.Worker + def perform(%Oban.Job{}) do + Artists.Batch.refresh_musicbrainz_data() + end +end diff --git a/lib/music_library/worker/artist_refresh_all_wikipedia_data.ex b/lib/music_library/worker/artist_refresh_all_wikipedia_data.ex new file mode 100644 index 00000000..d11131a1 --- /dev/null +++ b/lib/music_library/worker/artist_refresh_all_wikipedia_data.ex @@ -0,0 +1,10 @@ +defmodule MusicLibrary.Worker.ArtistRefreshAllWikipediaData do + use Oban.Worker, queue: :wikipedia, max_attempts: 3 + + alias MusicLibrary.Artists + + @impl Oban.Worker + def perform(%Oban.Job{}) do + Artists.Batch.refresh_wikipedia_data() + end +end diff --git a/lib/music_library/worker/record_generate_all_embeddings.ex b/lib/music_library/worker/record_generate_all_embeddings.ex new file mode 100644 index 00000000..8700f188 --- /dev/null +++ b/lib/music_library/worker/record_generate_all_embeddings.ex @@ -0,0 +1,10 @@ +defmodule MusicLibrary.Worker.RecordGenerateAllEmbeddings do + use Oban.Worker, queue: :heavy_writes, max_attempts: 3 + + alias MusicLibrary.Records + + @impl Oban.Worker + def perform(%Oban.Job{}) do + Records.Batch.generate_embeddings() + end +end