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)
|
|> cast_embed(:artists, with: &artist_changeset/2)
|
||||||
|> generate_cover_hash()
|
|> generate_cover_hash()
|
||||||
|> validate_required([:type, :title, :musicbrainz_id, :release, :genres])
|
|> validate_required([:type, :title, :musicbrainz_id, :release, :genres])
|
||||||
|
|> unique_constraint(:musicbrainz_id, name: "records_musicbrainz_id_format_index")
|
||||||
end
|
end
|
||||||
|
|
||||||
@doc false
|
@doc false
|
||||||
|
|||||||
@@ -107,7 +107,13 @@ defmodule MusicLibraryWeb.WishlistLive.Index do
|
|||||||
|> push_navigate(to: ~p"/wishlist/#{record.id}")}
|
|> push_navigate(to: ~p"/wishlist/#{record.id}")}
|
||||||
|
|
||||||
{:error, %Ecto.Changeset{} = changeset} ->
|
{: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} ->
|
{:error, reason} ->
|
||||||
{:noreply,
|
{:noreply,
|
||||||
|
|||||||
@@ -82,7 +82,8 @@ msgid "Edit"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/music_library_web/live/record_live/index.ex:118
|
#: 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
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Error importing record"
|
msgid "Error importing record"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -213,7 +214,7 @@ msgid "Record imported successfully"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/music_library_web/live/record_live/form_component.ex:117
|
#: 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
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Record updated successfully"
|
msgid "Record updated successfully"
|
||||||
msgstr ""
|
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