Extract helpers to handle async jobs
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user