Files
music_library/lib/music_brainz/release_group_search_result.ex
T
Claudio Ortolina 9e1dbfd530 Re-enable Credo ModuleDoc check
Closes #108
2026-03-13 10:52:01 +00:00

33 lines
941 B
Elixir

defmodule MusicBrainz.ReleaseGroupSearchResult do
@moduledoc false
alias MusicBrainz.ReleaseGroup
@enforce_keys [:id, :type, :title, :artists, :release_date]
defstruct [:id, :type, :title, :artists, :release_date]
@type t :: %__MODULE__{
id: String.t(),
type: :album | :ep | :live | :compilation | :single | :other,
title: String.t(),
artists: String.t(),
release_date: String.t() | nil
}
@spec from_api_response(map()) :: t()
def from_api_response(rg) do
%__MODULE__{
id: rg["id"],
type: ReleaseGroup.parse_type(rg["primary-type"]),
title: rg["title"],
artists: Enum.map_join(rg["artist-credit"], ", ", fn ac -> ac["artist"]["name"] end),
release_date: rg["first-release-date"]
}
end
@spec thumb_url(t()) :: String.t()
def thumb_url(rgr) do
"https://coverartarchive.org/release-group/#{rgr.id}/front-250"
end
end