From 11d5cd8cdd3eb3bebb2e61ed92a6015a362bee94 Mon Sep 17 00:00:00 2001 From: Berenice Medel Date: Fri, 19 Nov 2021 13:01:15 -0600 Subject: [PATCH] add unique constraint on songs changeset --- lib/live_beats/media_library.ex | 2 +- lib/live_beats/media_library/song.ex | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/live_beats/media_library.ex b/lib/live_beats/media_library.ex index f5e20ef..4f6e19c 100644 --- a/lib/live_beats/media_library.ex +++ b/lib/live_beats/media_library.ex @@ -196,7 +196,7 @@ defmodule LiveBeats.MediaLibrary do {:error, failed_op, failed_val, _changes} -> failed_op = case failed_op do - {:song, _number} -> :invalid_song + {:song, _number} -> "Invalid song (#{failed_val.changes.title})" :is_songs_count_updated? -> :invalid failed_op -> failed_op end diff --git a/lib/live_beats/media_library/song.ex b/lib/live_beats/media_library/song.ex index 9caff71..c843ea4 100644 --- a/lib/live_beats/media_library/song.ex +++ b/lib/live_beats/media_library/song.ex @@ -34,6 +34,10 @@ defmodule LiveBeats.MediaLibrary.Song do song |> cast(attrs, [:album_artist, :artist, :title, :attribution, :date_recorded, :date_released]) |> validate_required([:artist, :title]) + |> unique_constraint(:title, + message: "is a duplicated from another song", + name: "songs_user_id_title_artist_index" + ) end def put_user(%Ecto.Changeset{} = changeset, %Accounts.User{} = user) do