Extract helpers to handle async jobs

This commit is contained in:
Claudio Ortolina
2026-02-09 11:07:33 +00:00
parent b1fb4b5c4f
commit 9da995bce8
2 changed files with 30 additions and 60 deletions
+9 -30
View File
@@ -109,12 +109,7 @@ defmodule MusicLibrary.Artists do
end
def refresh_musicbrainz_data_async(artist_info) do
meta = %{}
params = %{"id" => artist_info.id}
params
|> Worker.ArtistRefreshMusicBrainzData.new(meta: meta)
|> BackgroundRepo.insert()
enqueue_worker(Worker.ArtistRefreshMusicBrainzData, %{"id" => artist_info.id})
end
def refresh_discogs_data(artist_id) do
@@ -136,12 +131,7 @@ defmodule MusicLibrary.Artists do
end
def refresh_discogs_data_async(artist_info) do
meta = %{}
params = %{"id" => artist_info.id}
params
|> Worker.ArtistRefreshDiscogsData.new(meta: meta)
|> BackgroundRepo.insert()
enqueue_worker(Worker.ArtistRefreshDiscogsData, %{"id" => artist_info.id})
end
def create_artist_info(attrs) do
@@ -176,30 +166,15 @@ defmodule MusicLibrary.Artists do
end
def fetch_artist_info_async(artist_id) do
meta = %{}
params = %{"id" => artist_id}
params
|> Worker.FetchArtistInfo.new(meta: meta)
|> BackgroundRepo.insert()
enqueue_worker(Worker.FetchArtistInfo, %{"id" => artist_id})
end
def fetch_image_async(artist_id) do
meta = %{}
params = %{"id" => artist_id}
params
|> Worker.FetchArtistImage.new(meta: meta)
|> BackgroundRepo.insert()
enqueue_worker(Worker.FetchArtistImage, %{"id" => artist_id})
end
def prune_artist_info_async(artist_id) do
meta = %{}
params = %{"id" => artist_id}
params
|> Worker.PruneArtistInfo.new(meta: meta)
|> BackgroundRepo.insert()
enqueue_worker(Worker.PruneArtistInfo, %{"id" => artist_id})
end
def change_artist_info(artist_info, attrs \\ %{}) do
@@ -223,4 +198,8 @@ defmodule MusicLibrary.Artists do
q |> Repo.all() |> MapSet.new()
end
defp enqueue_worker(worker, params) do
params |> worker.new(meta: %{}) |> BackgroundRepo.insert()
end
end
+21 -30
View File
@@ -248,12 +248,7 @@ defmodule MusicLibrary.Records do
end
def populate_genres_async(record) do
meta = %{title: record.title, artists: Enum.map(record.artists, & &1.name)}
params = %{"id" => record.id}
params
|> Worker.PopulateGenres.new(meta: meta)
|> BackgroundRepo.insert()
enqueue_worker(Worker.PopulateGenres, %{"id" => record.id}, record_meta(record))
end
defp get_cover_art_or_default(musicbrainz_id) do
@@ -308,30 +303,23 @@ defmodule MusicLibrary.Records do
end
def refresh_cover_async(record) do
meta = %{title: record.title, artists: Enum.map(record.artists, & &1.name)}
params = %{"id" => record.id}
params
|> Worker.RefreshCover.new(meta: meta)
|> BackgroundRepo.insert()
enqueue_worker(Worker.RefreshCover, %{"id" => record.id}, record_meta(record))
end
def extract_colors_async(record, method) do
meta = %{title: record.title, artists: Enum.map(record.artists, & &1.name)}
params = %{"id" => record.id, "method" => method}
params
|> Worker.ExtractColors.new(meta: meta)
|> BackgroundRepo.insert()
enqueue_worker(
Worker.ExtractColors,
%{"id" => record.id, "method" => method},
record_meta(record)
)
end
def generate_embedding_async(record) do
meta = %{title: record.title, artists: Enum.map(record.artists, & &1.name)}
params = %{"record_id" => record.id}
params
|> Worker.GenerateRecordEmbedding.new(meta: meta)
|> BackgroundRepo.insert()
enqueue_worker(
Worker.GenerateRecordEmbedding,
%{"record_id" => record.id},
record_meta(record)
)
end
def resize_cover(record) do
@@ -353,12 +341,7 @@ defmodule MusicLibrary.Records do
end
def refresh_musicbrainz_data_async(record) do
meta = %{title: record.title, artists: Enum.map(record.artists, & &1.name)}
params = %{"id" => record.id}
params
|> Worker.RecordRefreshMusicBrainzData.new(meta: meta)
|> BackgroundRepo.insert()
enqueue_worker(Worker.RecordRefreshMusicBrainzData, %{"id" => record.id}, record_meta(record))
end
defp merge_releases(musicbrainz_id, musicbrainz_data) do
@@ -446,4 +429,12 @@ defmodule MusicLibrary.Records do
{:update, record}
)
end
defp enqueue_worker(worker, params, meta) do
params |> worker.new(meta: meta) |> BackgroundRepo.insert()
end
defp record_meta(record) do
%{title: record.title, artists: Enum.map(record.artists, & &1.name)}
end
end