check for slug uniqueness before submitting
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
2022-11-28 00:20:57 -05:00
parent c0afc96b8d
commit 6452f64fec
6 changed files with 22 additions and 9 deletions

View File

@ -6,7 +6,7 @@ defmodule Memex.Notes.Note do
import Ecto.Changeset
import MemexWeb.Gettext
alias Ecto.{Changeset, UUID}
alias Memex.Accounts.User
alias Memex.{Accounts.User, Repo}
@primary_key {:id, :binary_id, autogenerate: true}
@foreign_key_type :binary_id
@ -48,6 +48,8 @@ defmodule Memex.Notes.Note do
message: dgettext("errors", "invalid format: only numbers, letters and hyphen are accepted")
)
|> validate_required([:slug, :content, :user_id, :visibility])
|> unique_constraint(:slug)
|> unsafe_validate_unique(:slug, Repo)
end
@spec update_changeset(t(), attrs :: map(), User.t()) :: changeset()
@ -59,6 +61,8 @@ defmodule Memex.Notes.Note do
message: dgettext("errors", "invalid format: only numbers, letters and hyphen are accepted")
)
|> validate_required([:slug, :content, :visibility])
|> unique_constraint(:slug)
|> unsafe_validate_unique(:slug, Repo)
end
defp cast_tags_string(changeset, %{"tags_string" => tags_string})