From c17b3235667454aa5e65ad9fde44a3c4c5e9fc59 Mon Sep 17 00:00:00 2001 From: KKlochko Date: Thu, 6 Jul 2023 19:54:57 +0300 Subject: [PATCH] Update the Links model to have a unique shorten. --- CHANGELOG.org | 2 ++ lib/link_shortener/links.ex | 6 ++++-- priv/repo/migrations/20230704184320_create_links.exs | 3 +++ 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.org b/CHANGELOG.org index 0bbc43b..33ea5d9 100644 --- a/CHANGELOG.org +++ b/CHANGELOG.org @@ -3,4 +3,6 @@ Init project. Added the Links model. Added README and CHANGELOG. +** 0.1.1 <2023-07-06 Thu> + Updated the Links model to have a unique shorten. diff --git a/lib/link_shortener/links.ex b/lib/link_shortener/links.ex index 895c093..724b444 100644 --- a/lib/link_shortener/links.ex +++ b/lib/link_shortener/links.ex @@ -8,6 +8,7 @@ defmodule LinkShortener.Links do schema "links" do field :name, :string field :url, :string + field :shorten, :string timestamps() end @@ -15,8 +16,9 @@ defmodule LinkShortener.Links do @doc false def changeset(link, attrs) do link - |> cast(attrs, [:name, :url]) - |> validate_required([:name, :url]) + |> cast(attrs, [:name, :url, :shorten]) + |> validate_required([:url, :shorten]) + |> unique_constraint(:shorten) end def new_one(), do: Links.changeset(%Links{}) diff --git a/priv/repo/migrations/20230704184320_create_links.exs b/priv/repo/migrations/20230704184320_create_links.exs index e634909..09da15d 100644 --- a/priv/repo/migrations/20230704184320_create_links.exs +++ b/priv/repo/migrations/20230704184320_create_links.exs @@ -5,8 +5,11 @@ defmodule LinkShortener.Repo.Migrations.CreateLinks do create table(:links) do add :name, :string add :url, :string + add :shorten, :string timestamps() end + + create unique_index(:links, [:shorten]) end end