From 9b7990c14c6ef70dd9f543019641753b07389566 Mon Sep 17 00:00:00 2001 From: Claudio Ortolina Date: Sat, 26 Apr 2025 14:32:40 +0100 Subject: [PATCH] Account for absence of discogs id --- lib/music_library/artists.ex | 34 +++++++++++++++++------- lib/music_library/records/artist_info.ex | 2 +- 2 files changed, 25 insertions(+), 11 deletions(-) diff --git a/lib/music_library/artists.ex b/lib/music_library/artists.ex index 010ca719..4f0167d2 100644 --- a/lib/music_library/artists.ex +++ b/lib/music_library/artists.ex @@ -46,16 +46,30 @@ defmodule MusicLibrary.Artists do end def fetch_artist_info(artist_id) do - with {:ok, musicbrainz_artist} <- MusicBrainz.get_artist(artist_id), - discogs_id = MusicBrainz.Artist.get_discogs_id(musicbrainz_artist), - {:ok, discogs_artist} <- Discogs.get_artist(discogs_id) do - %ArtistInfo{} - |> ArtistInfo.changeset(%{ - id: musicbrainz_artist.id, - musicbrainz_data: musicbrainz_artist.musicbrainz_data, - discogs_data: discogs_artist - }) - |> Repo.insert(on_conflict: {:replace, [:musicbrainz_data, :discogs_data]}) + case MusicBrainz.get_artist(artist_id) do + {:ok, musicbrainz_artist} -> + if discogs_id = MusicBrainz.Artist.get_discogs_id(musicbrainz_artist) do + case Discogs.get_artist(discogs_id) do + {:ok, discogs_artist} -> + %ArtistInfo{} + |> ArtistInfo.changeset(%{ + id: musicbrainz_artist.id, + musicbrainz_data: musicbrainz_artist.musicbrainz_data, + discogs_data: discogs_artist + }) + |> Repo.insert(on_conflict: {:replace, [:musicbrainz_data, :discogs_data]}) + + error -> + error + end + else + %ArtistInfo{} + |> ArtistInfo.changeset(%{ + id: musicbrainz_artist.id, + musicbrainz_data: musicbrainz_artist.musicbrainz_data + }) + |> Repo.insert(on_conflict: {:replace, [:musicbrainz_data, :discogs_data]}) + end end end diff --git a/lib/music_library/records/artist_info.ex b/lib/music_library/records/artist_info.ex index 9fa52fd1..bb9ccaea 100644 --- a/lib/music_library/records/artist_info.ex +++ b/lib/music_library/records/artist_info.ex @@ -24,7 +24,7 @@ defmodule MusicLibrary.Records.ArtistInfo do :image_data, :image_data_width ]) - |> validate_required([:musicbrainz_data, :discogs_data]) + |> validate_required([:musicbrainz_data]) |> generate_image_hash() end