Rename record.release to record.release_date

Includes changes to dependent tables (i.e. the record search index) and
related functions.
This commit is contained in:
Claudio Ortolina
2025-05-01 14:04:57 +01:00
parent 8be0144cc7
commit e083950138
20 changed files with 1066 additions and 51 deletions
@@ -1,6 +1,6 @@
defmodule MusicBrainz.ReleaseGroupSearchResult do
@enforce_keys [:id, :type, :title, :artists, :release]
defstruct [:id, :type, :title, :artists, :release]
@enforce_keys [:id, :type, :title, :artists, :release_date]
defstruct [:id, :type, :title, :artists, :release_date]
alias MusicBrainz.ReleaseGroup
@@ -10,7 +10,7 @@ defmodule MusicBrainz.ReleaseGroupSearchResult do
type: ReleaseGroup.parse_type(rg["primary-type"]),
title: rg["title"],
artists: Enum.map_join(rg["artist-credit"], ", ", fn ac -> ac["artist"]["name"] end),
release: rg["first-release-date"]
release_date: rg["first-release-date"]
}
end
+1 -1
View File
@@ -22,7 +22,7 @@ defmodule MusicLibrary.Records do
:release_ids,
:included_release_group_ids,
:cover_hash,
:release
:release_date
]
end
+14 -14
View File
@@ -20,7 +20,7 @@ defmodule MusicLibrary.Records.Record do
field :musicbrainz_id, Ecto.UUID
field :musicbrainz_data, :map, default: %{}
field :genres, {:array, :string}
field :release, :string
field :release_date, :string
field :purchased_at, :utc_datetime
field :release_ids, {:array, :string}, default: []
field :included_release_group_ids, {:array, :string}, default: []
@@ -55,10 +55,10 @@ defmodule MusicLibrary.Records.Record do
Enum.count(record.release_ids)
end
def released?(%{release: nil}, _current_day), do: true
def released?(%{release_date: nil}, _current_day), do: true
def released?(record, current_day) do
case Date.from_iso8601(record.release) do
case Date.from_iso8601(record.release_date) do
{:ok, release_date} ->
Date.compare(current_day, release_date) != :lt
@@ -78,7 +78,7 @@ defmodule MusicLibrary.Records.Record do
:title,
:musicbrainz_id,
:musicbrainz_data,
:release,
:release_date,
:genres,
:release_ids,
:included_release_group_ids,
@@ -169,7 +169,7 @@ defmodule MusicLibrary.Records.Record do
"musicbrainz_data" => release_group,
"title" => release_group["title"],
"artists" => artists_attrs,
"release" => release_group["first-release-date"],
"release_date" => release_group["first-release-date"],
"type" => parse_subtype(release_group["primary-type"]),
"genres" => Enum.map(release_group["genres"], fn g -> g["name"] end),
"release_ids" => Enum.map(release_group["releases"], fn r -> r["id"] end),
@@ -191,22 +191,22 @@ defmodule MusicLibrary.Records.Record do
and can be nil or empty string.
iex> alias MusicLibrary.Records.Record
iex> Record.format_release(nil)
iex> Record.format_release_date(nil)
"N/A"
iex> Record.format_release("")
iex> Record.format_release_date("")
"N/A"
iex> Record.format_release("2021")
iex> Record.format_release_date("2021")
"2021"
iex> Record.format_release("2021-12")
iex> Record.format_release_date("2021-12")
"12/2021"
iex> Record.format_release("2021-12-23")
iex> Record.format_release_date("2021-12-23")
"23/12/2021"
"""
@spec format_release(String.t() | nil) :: String.t()
def format_release(nil), do: "N/A"
@spec format_release_date(String.t() | nil) :: String.t()
def format_release_date(nil), do: "N/A"
def format_release(release) do
case String.split(release, "-", trim: true) do
def format_release_date(release_date) do
case String.split(release_date, "-", trim: true) do
[] -> "N/A"
[year] -> year
[year, month] -> "#{month}/#{year}"
+1 -1
View File
@@ -20,7 +20,7 @@ defmodule MusicLibrary.Records.SearchIndex do
field :title, :string
field :musicbrainz_id, Ecto.UUID
field :genres, {:array, :string}
field :release, :string
field :release_date, :string
field :purchased_at, :utc_datetime
field :cover_hash, :string
field :release_ids, {:array, :string}, default: []
@@ -81,7 +81,9 @@ defmodule MusicLibraryWeb.AddRecordComponent do
{@release_group.title}
</h2>
<p class="mt-1 text-xs leading-5 text-zinc-500 dark:text-zinc-400">
{Records.Record.format_release(@release_group.release)} · {type_label(@release_group.type)}
{Records.Record.format_release_date(@release_group.release_date)} · {type_label(
@release_group.type
)}
</p>
</div>
<div class="relative flex-none">
@@ -280,7 +280,7 @@ defmodule MusicLibraryWeb.BarcodeScannerComponent do
{@release.title}
</h2>
<p class="mt-1 text-xs leading-5 text-zinc-500 dark:text-zinc-400">
{release_format_label(@release)} · {Records.Record.format_release(@release.date)} · {RecordComponents.type_label(
{release_format_label(@release)} · {Records.Record.format_release_date(@release.date)} · {RecordComponents.type_label(
@release.release_group.type
)}
</p>
@@ -56,7 +56,7 @@ defmodule MusicLibraryWeb.FormComponent do
label={gettext("MusicBrainz ID")}
/>
<div class="sm:columns-2">
<.input field={@form[:release]} type="text" label={gettext("Release")} />
<.input field={@form[:release_date]} type="text" label={gettext("Release Date")} />
<.input
:if={@show_purchased_at}
field={@form[:purchased_at]}
@@ -57,7 +57,7 @@ defmodule MusicLibraryWeb.RecordComponents do
{record.title}
</h2>
<p class="mt-1 text-xs leading-5 text-zinc-500 dark:text-zinc-400">
{Records.Record.format_release(record.release)}
{Records.Record.format_release_date(record.release_date)}
<span :if={@current_date && !Records.Record.released?(record, @current_date)}>
({gettext("Unreleased")})
</span>
@@ -271,7 +271,7 @@ defmodule MusicLibraryWeb.RecordComponents do
{format_label(record.format)} · {type_label(record.type)}
</p>
<p class="pointer-events-none block text-sm font-medium text-zinc-500">
{Records.Record.format_release(record.release)}
{Records.Record.format_release_date(record.release_date)}
</p>
</li>
</ul>
@@ -125,8 +125,8 @@ defmodule MusicLibraryWeb.ArtistLive.Show do
{collection, wishlist} = Enum.split_with(records, fn r -> r.purchased_at end)
%{
collection: Enum.sort_by(collection, fn r -> r.release end, :desc),
wishlist: Enum.sort_by(wishlist, fn r -> r.release end, :desc)
collection: Enum.sort_by(collection, fn r -> r.release_date end, :desc),
wishlist: Enum.sort_by(wishlist, fn r -> r.release_date end, :desc)
}
end
@@ -22,7 +22,7 @@
{@record.title}
</h2>
<p class="mt-2 text-sm leading-5 text-zinc-500 dark:text-zinc-400">
{Records.Record.format_release(@record.release)} · {format_label(@record.format)} · {type_label(
{Records.Record.format_release_date(@record.release_date)} · {format_label(@record.format)} · {type_label(
@record.type
)}
</p>
@@ -22,7 +22,7 @@
{@record.title}
</h2>
<p class="mt-2 text-sm leading-5 text-zinc-500 dark:text-zinc-400">
{Records.Record.format_release(@record.release)}
{Records.Record.format_release_date(@record.release_date)}
<span :if={@current_date && !Records.Record.released?(@record, @current_date)}>
({gettext("Unreleased")})
</span>