Reorder module functions roughly by topic/usage
This commit is contained in:
@@ -29,6 +29,41 @@ defmodule MusicLibrary.Records.Record do
|
|||||||
timestamps(type: :utc_datetime)
|
timestamps(type: :utc_datetime)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def formats, do: @formats
|
||||||
|
def types, do: @types
|
||||||
|
|
||||||
|
def child_release_groups(record) do
|
||||||
|
record.musicbrainz_data
|
||||||
|
|> Map.get("relations", [])
|
||||||
|
|> Enum.filter(fn relation ->
|
||||||
|
relation["release_group"]["id"] in record.included_release_group_ids
|
||||||
|
end)
|
||||||
|
|> Enum.map(fn relation ->
|
||||||
|
MusicBrainz.ReleaseGroup.from_api_response(relation["release_group"])
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
|
||||||
|
def child_release_groups_count(record) do
|
||||||
|
Enum.count(record.included_release_group_ids)
|
||||||
|
end
|
||||||
|
|
||||||
|
def release_count(record) do
|
||||||
|
Enum.count(record.release_ids)
|
||||||
|
end
|
||||||
|
|
||||||
|
def released?(record, current_day) do
|
||||||
|
case Date.from_iso8601(record.release) do
|
||||||
|
{:ok, release_date} ->
|
||||||
|
Date.compare(current_day, release_date) != :lt
|
||||||
|
|
||||||
|
_error ->
|
||||||
|
# When a release date cannot be parsed it's normally because the record
|
||||||
|
# is old and information is not specific, so we can err on the side of assuming
|
||||||
|
# it's been released.
|
||||||
|
true
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def changeset(record, attrs) do
|
def changeset(record, attrs) do
|
||||||
record
|
record
|
||||||
|> cast(attrs, [
|
|> cast(attrs, [
|
||||||
@@ -53,25 +88,6 @@ defmodule MusicLibrary.Records.Record do
|
|||||||
|> update_included_release_group_ids()
|
|> update_included_release_group_ids()
|
||||||
end
|
end
|
||||||
|
|
||||||
def child_release_groups(record) do
|
|
||||||
record.musicbrainz_data
|
|
||||||
|> Map.get("relations", [])
|
|
||||||
|> Enum.filter(fn relation ->
|
|
||||||
relation["release_group"]["id"] in record.included_release_group_ids
|
|
||||||
end)
|
|
||||||
|> Enum.map(fn relation ->
|
|
||||||
MusicBrainz.ReleaseGroup.from_api_response(relation["release_group"])
|
|
||||||
end)
|
|
||||||
end
|
|
||||||
|
|
||||||
def child_release_groups_count(record) do
|
|
||||||
Enum.count(record.included_release_group_ids)
|
|
||||||
end
|
|
||||||
|
|
||||||
def release_count(record) do
|
|
||||||
Enum.count(record.release_ids)
|
|
||||||
end
|
|
||||||
|
|
||||||
def add_genres(record, genres) do
|
def add_genres(record, genres) do
|
||||||
change(record, genres: genres)
|
change(record, genres: genres)
|
||||||
end
|
end
|
||||||
@@ -89,6 +105,20 @@ defmodule MusicLibrary.Records.Record do
|
|||||||
|> update_included_release_group_ids()
|
|> update_included_release_group_ids()
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def generate_cover_hash(record = %__MODULE__{cover_data: cover_data}) do
|
||||||
|
change(record, cover_hash: Cover.hash(cover_data))
|
||||||
|
end
|
||||||
|
|
||||||
|
def generate_cover_hash(changeset) do
|
||||||
|
case get_change(changeset, :cover_data) do
|
||||||
|
nil ->
|
||||||
|
changeset
|
||||||
|
|
||||||
|
cover_data ->
|
||||||
|
put_change(changeset, :cover_hash, Cover.hash(cover_data))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
defp update_release_ids(changeset) do
|
defp update_release_ids(changeset) do
|
||||||
case get_change(changeset, :musicbrainz_data) do
|
case get_change(changeset, :musicbrainz_data) do
|
||||||
nil ->
|
nil ->
|
||||||
@@ -125,20 +155,6 @@ defmodule MusicLibrary.Records.Record do
|
|||||||
|> Enum.map(fn relation -> relation["release_group"]["id"] end)
|
|> Enum.map(fn relation -> relation["release_group"]["id"] end)
|
||||||
end
|
end
|
||||||
|
|
||||||
def generate_cover_hash(record = %__MODULE__{cover_data: cover_data}) do
|
|
||||||
change(record, cover_hash: Cover.hash(cover_data))
|
|
||||||
end
|
|
||||||
|
|
||||||
def generate_cover_hash(changeset) do
|
|
||||||
case get_change(changeset, :cover_data) do
|
|
||||||
nil ->
|
|
||||||
changeset
|
|
||||||
|
|
||||||
cover_data ->
|
|
||||||
put_change(changeset, :cover_hash, Cover.hash(cover_data))
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def attrs_from_release_group(release_group) do
|
def attrs_from_release_group(release_group) do
|
||||||
musicbrainz_id = release_group["id"]
|
musicbrainz_id = release_group["id"]
|
||||||
|
|
||||||
@@ -167,8 +183,12 @@ defmodule MusicLibrary.Records.Record do
|
|||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
def formats, do: @formats
|
defp parse_subtype("Album"), do: :album
|
||||||
def types, do: @types
|
defp parse_subtype("EP"), do: :ep
|
||||||
|
defp parse_subtype("Live"), do: :live
|
||||||
|
defp parse_subtype("Compilation"), do: :compilation
|
||||||
|
defp parse_subtype("Single"), do: :single
|
||||||
|
defp parse_subtype(_), do: :other
|
||||||
|
|
||||||
def format_release(nil), do: "N/A"
|
def format_release(nil), do: "N/A"
|
||||||
|
|
||||||
@@ -181,27 +201,7 @@ defmodule MusicLibrary.Records.Record do
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def released?(record, current_day) do
|
|
||||||
case Date.from_iso8601(record.release) do
|
|
||||||
{:ok, release_date} ->
|
|
||||||
Date.compare(current_day, release_date) != :lt
|
|
||||||
|
|
||||||
_error ->
|
|
||||||
# When a release date cannot be parsed it's normally because the record
|
|
||||||
# is old and information is not specific, so we can err on the side of assuming
|
|
||||||
# it's been released.
|
|
||||||
true
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def format_as_date(purchased_at) do
|
def format_as_date(purchased_at) do
|
||||||
"#{purchased_at.day}/#{purchased_at.month}/#{purchased_at.year}"
|
"#{purchased_at.day}/#{purchased_at.month}/#{purchased_at.year}"
|
||||||
end
|
end
|
||||||
|
|
||||||
defp parse_subtype("Album"), do: :album
|
|
||||||
defp parse_subtype("EP"), do: :ep
|
|
||||||
defp parse_subtype("Live"), do: :live
|
|
||||||
defp parse_subtype("Compilation"), do: :compilation
|
|
||||||
defp parse_subtype("Single"), do: :single
|
|
||||||
defp parse_subtype(_), do: :other
|
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user