Simplify included release groups logic
This makes the code slightly less efficient as it constructs intermediate structures BEFORE filtering, but it makes it for simpler code to maintain down the line. Performance is not visible affected as the largest lists involved count around 200 items.
This commit is contained in:
@@ -1,10 +1,7 @@
|
||||
defmodule MusicLibrary.Records.MusicbrainzData do
|
||||
def included_release_groups(musicbrainz_data, included_release_group_ids) do
|
||||
def included_release_groups(musicbrainz_data) do
|
||||
musicbrainz_data
|
||||
|> Map.get("relations", [])
|
||||
|> Enum.filter(fn relation ->
|
||||
relation["release_group"]["id"] in included_release_group_ids
|
||||
end)
|
||||
|> get_release_groups()
|
||||
|> Enum.map(fn relation ->
|
||||
MusicBrainz.ReleaseGroup.from_api_response(relation["release_group"])
|
||||
end)
|
||||
@@ -17,6 +14,12 @@ defmodule MusicLibrary.Records.MusicbrainzData do
|
||||
end
|
||||
|
||||
def included_release_group_ids(musicbrainz_data) do
|
||||
musicbrainz_data
|
||||
|> included_release_groups()
|
||||
|> Enum.map(fn rg -> rg.id end)
|
||||
end
|
||||
|
||||
defp get_release_groups(musicbrainz_data) do
|
||||
musicbrainz_data
|
||||
|> Map.get("relations", [])
|
||||
|> Enum.filter(fn relation ->
|
||||
@@ -24,6 +27,5 @@ defmodule MusicLibrary.Records.MusicbrainzData do
|
||||
relation["type"] == "included in" and
|
||||
relation["direction"] == "backward"
|
||||
end)
|
||||
|> Enum.map(fn relation -> relation["release_group"]["id"] end)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -33,10 +33,9 @@ defmodule MusicLibrary.Records.Record do
|
||||
def types, do: @types
|
||||
|
||||
def included_release_groups(record) do
|
||||
MusicbrainzData.included_release_groups(
|
||||
record.musicbrainz_data,
|
||||
record.included_release_group_ids
|
||||
)
|
||||
record.musicbrainz_data
|
||||
|> MusicbrainzData.included_release_groups()
|
||||
|> Enum.filter(fn rg -> rg.id in record.included_release_group_ids end)
|
||||
end
|
||||
|
||||
def included_release_groups_count(record) do
|
||||
|
||||
Reference in New Issue
Block a user