From 2075315721f9941d3710715d4a9cd303bd5304d1 Mon Sep 17 00:00:00 2001 From: Thelonius Kort Date: Fri, 30 Dec 2022 21:16:06 +0100 Subject: [PATCH] Add unique constraint to Translation To make sure only one translation per article is possible. --- lib/outlook/translations/translation.ex | 3 +++ ...41_add_lang_article_id_unique_index_to_translations.exs | 7 +++++++ 2 files changed, 10 insertions(+) create mode 100644 priv/repo/migrations/20221230170041_add_lang_article_id_unique_index_to_translations.exs diff --git a/lib/outlook/translations/translation.ex b/lib/outlook/translations/translation.ex index 2cd972c..225cd1f 100644 --- a/lib/outlook/translations/translation.ex +++ b/lib/outlook/translations/translation.ex @@ -26,5 +26,8 @@ defmodule Outlook.Translations.Translation do |> cast(attrs, [:lang, :title, :teaser, :date, :public, :unauthorized]) |> cast(attrs, [:content], force_changes: true) |> validate_required([:lang, :title, :teaser, :content, :date, :public, :unauthorized]) + |> unique_constraint([:lang, :article_id], + message: "translation for this language already exists", + name: :article_id_lang_unique_index) end end diff --git a/priv/repo/migrations/20221230170041_add_lang_article_id_unique_index_to_translations.exs b/priv/repo/migrations/20221230170041_add_lang_article_id_unique_index_to_translations.exs new file mode 100644 index 0000000..d81ffc4 --- /dev/null +++ b/priv/repo/migrations/20221230170041_add_lang_article_id_unique_index_to_translations.exs @@ -0,0 +1,7 @@ +defmodule Outlook.Repo.Migrations.AddLangArticleIdUniqueIndexToTranslations do + use Ecto.Migration + + def change do + create unique_index(:translations, [:article_id, :lang], name: :article_id_lang_unique_index) + end +end