Insert default purchased_at date when importing a record

This commit is contained in:
Claudio Ortolina
2024-10-19 19:22:43 +01:00
parent fd83bd4941
commit 54f8da81b6
4 changed files with 21 additions and 4 deletions
+5 -3
View File
@@ -123,16 +123,17 @@ defmodule MusicLibrary.Records do
def import_from_musicbrainz(musicbrainz_id, opts \\ []) do
with format = Keyword.get(opts, :format, "cd"),
purchased_at = Keyword.get(opts, :purchased_at, DateTime.utc_now()),
{:ok, release_group} <- musicbrainz().get_release_group(musicbrainz_id),
{:ok, cover_data} <- musicbrainz().get_cover_art(musicbrainz_id),
record_params = build_record_params(release_group, cover_data, format) do
record_params = build_record_params(release_group, cover_data, format, purchased_at) do
create_record(record_params)
else
error -> error
end
end
defp build_record_params(release_group, cover_data, format) do
defp build_record_params(release_group, cover_data, format, purchased_at) do
musicbrainz_id = release_group["id"]
artists_attrs =
@@ -157,7 +158,8 @@ defmodule MusicLibrary.Records do
"format" => format,
"genres" => Enum.map(release_group["genres"], fn g -> g["name"] end),
"cover_url" => "https://coverartarchive.org/release-group/#{musicbrainz_id}/front",
"cover_data" => cover_data
"cover_data" => cover_data,
"purchased_at" => purchased_at
}
end
+3 -1
View File
@@ -18,6 +18,7 @@ defmodule MusicLibrary.Records.Record do
field :musicbrainz_data, :map
field :genres, {:array, :string}
field :release, :string
field :purchased_at, :utc_datetime
embeds_many :artists, Artist do
field :name, :string
@@ -41,7 +42,8 @@ defmodule MusicLibrary.Records.Record do
:release,
:genres,
:cover_url,
:cover_data
:cover_data,
:purchased_at
])
|> cast_embed(:artists, with: &artist_changeset/2)
|> generate_cover_hash()