When refreshing MusicBrainz Data, update the relevant release IDs
This commit is contained in:
@@ -98,15 +98,27 @@ defmodule MusicLibrary.Records.Record do
|
|||||||
def add_musicbrainz_data(record, musicbrainz_data) do
|
def add_musicbrainz_data(record, musicbrainz_data) do
|
||||||
record
|
record
|
||||||
|> change(musicbrainz_data: musicbrainz_data)
|
|> change(musicbrainz_data: musicbrainz_data)
|
||||||
|
|> update_release_ids()
|
||||||
end
|
end
|
||||||
|
|
||||||
def update_release_ids(record) do
|
def update_release_ids(record = %__MODULE__{musicbrainz_data: musicbrainz_data}) do
|
||||||
release_ids = Enum.map(record.musicbrainz_data["releases"], fn r -> r["id"] end)
|
release_ids = Enum.map(musicbrainz_data["releases"], fn r -> r["id"] end)
|
||||||
|
|
||||||
record
|
record
|
||||||
|> change(release_ids: release_ids)
|
|> change(release_ids: release_ids)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def update_release_ids(changeset) do
|
||||||
|
case get_change(changeset, :musicbrainz_data) do
|
||||||
|
nil ->
|
||||||
|
changeset
|
||||||
|
|
||||||
|
musicbrainz_data ->
|
||||||
|
release_ids = Enum.map(musicbrainz_data["releases"], fn r -> r["id"] end)
|
||||||
|
put_change(changeset, :release_ids, release_ids)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def generate_cover_hash(record = %__MODULE__{cover_data: cover_data}) do
|
def generate_cover_hash(record = %__MODULE__{cover_data: cover_data}) do
|
||||||
hash = :crypto.hash(:sha256, cover_data) |> Base.encode16()
|
hash = :crypto.hash(:sha256, cover_data) |> Base.encode16()
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user