Prevent importing the same record twice

This commit is contained in:
Claudio Ortolina
2024-11-05 11:40:01 +00:00
parent 5674937ab0
commit 74a11ca10f
4 changed files with 18 additions and 3 deletions
+1
View File
@@ -48,6 +48,7 @@ defmodule MusicLibrary.Records.Record do
|> cast_embed(:artists, with: &artist_changeset/2)
|> generate_cover_hash()
|> validate_required([:type, :title, :musicbrainz_id, :release, :genres])
|> unique_constraint(:musicbrainz_id, name: "records_musicbrainz_id_format_index")
end
@doc false
@@ -107,7 +107,13 @@ defmodule MusicLibraryWeb.WishlistLive.Index do
|> push_navigate(to: ~p"/wishlist/#{record.id}")}
{:error, %Ecto.Changeset{} = changeset} ->
{:noreply, assign(socket, form: to_form(changeset))}
{:noreply,
socket
|> put_flash(
:error,
gettext("Error importing record") <> "," <> inspect(changeset.errors)
)
|> push_patch(to: ~p"/wishlist")}
{:error, reason} ->
{:noreply,
+3 -2
View File
@@ -82,7 +82,8 @@ msgid "Edit"
msgstr ""
#: lib/music_library_web/live/record_live/index.ex:118
#: lib/music_library_web/live/wishlist_live/index.ex:115
#: lib/music_library_web/live/wishlist_live/index.ex:114
#: lib/music_library_web/live/wishlist_live/index.ex:121
#, elixir-autogen, elixir-format
msgid "Error importing record"
msgstr ""
@@ -213,7 +214,7 @@ msgid "Record imported successfully"
msgstr ""
#: lib/music_library_web/live/record_live/form_component.ex:117
#: lib/music_library_web/live/wishlist_live/index.ex:128
#: lib/music_library_web/live/wishlist_live/index.ex:134
#, elixir-autogen, elixir-format
msgid "Record updated successfully"
msgstr ""
@@ -0,0 +1,7 @@
defmodule MusicLibrary.Repo.Migrations.AddUniqueIndexToRecords do
use Ecto.Migration
def change do
create unique_index(:records, [:musicbrainz_id, :format])
end
end