Prevent importing the same record twice
This commit is contained in:
@@ -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,
|
||||
|
||||
@@ -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
|
||||
Reference in New Issue
Block a user