diff --git a/lib/music_library/artists.ex b/lib/music_library/artists.ex index 165f4e37..010ca719 100644 --- a/lib/music_library/artists.ex +++ b/lib/music_library/artists.ex @@ -3,6 +3,7 @@ defmodule MusicLibrary.Artists do alias MusicLibrary.Repo alias MusicLibrary.Records.{ArtistInfo, ArtistRecord, Record} + alias MusicLibrary.{BackgroundRepo, Worker} def get_artist!(musicbrainz_id) do q = @@ -58,6 +59,15 @@ defmodule MusicLibrary.Artists do end end + def fetch_artist_info_async(artist_id) do + meta = %{} + params = %{"id" => artist_id} + + params + |> Worker.FetchArtistInfo.new(meta: meta) + |> BackgroundRepo.insert() + end + defp get_collected_artist_ids do q = from ar in ArtistRecord, diff --git a/lib/music_library/worker/fetch_artist_info.ex b/lib/music_library/worker/fetch_artist_info.ex new file mode 100644 index 00000000..417fd8fe --- /dev/null +++ b/lib/music_library/worker/fetch_artist_info.ex @@ -0,0 +1,10 @@ +defmodule MusicLibrary.Worker.FetchArtistInfo do + use Oban.Worker, queue: :default, max_attempts: 3 + + @impl Oban.Worker + def perform(%Oban.Job{args: %{"id" => artist_id}}) do + with {:ok, _artist_info} <- MusicLibrary.Artists.fetch_artist_info(artist_id) do + :ok + end + end +end