Refactor to split the Links to a Link model and a Links logic.

main
KKlochko 2 years ago
parent fb4f0025d1
commit 9e7e052249

@ -26,4 +26,5 @@
** 0.4.3 <2023-07-31 Mon> ** 0.4.3 <2023-07-31 Mon>
Rename the controller and the view names to "Link". Rename the controller and the view names to "Link".
Move Links to the Links context. Move Links to the Links context.
Refactor to split the Links to a Link model and a Links logic.

@ -0,0 +1,21 @@
defmodule LinkShortener.Links.Link do
use Ecto.Schema
import Ecto.Changeset
import Ecto.Query
schema "links" do
field :name, :string
field :url, :string
field :shorten, :string
timestamps()
end
@doc false
def changeset(link, attrs) do
link
|> cast(attrs, [:name, :url, :shorten])
|> validate_required([:url, :shorten])
|> unique_constraint(:shorten)
end
end

@ -1,28 +1,12 @@
defmodule LinkShortener.Links do defmodule LinkShortener.Links.Links do
use Ecto.Schema use Ecto.Schema
import Ecto.Changeset import Ecto.Changeset
import Ecto.Query import Ecto.Query
alias LinkShortener.Repo alias LinkShortener.Repo
alias LinkShortener.Links alias LinkShortener.Links.Link
alias LinkShortener.Generators.SafeString alias LinkShortener.Generators.SafeString
schema "links" do def new_one(), do: Link.changeset(%Link{})
field :name, :string
field :url, :string
field :shorten, :string
timestamps()
end
@doc false
def changeset(link, attrs) do
link
|> cast(attrs, [:name, :url, :shorten])
|> validate_required([:url, :shorten])
|> unique_constraint(:shorten)
end
def new_one(), do: Links.changeset(%Links{})
def create_one(attrs, length \\ 10, generator \\ SafeString) do def create_one(attrs, length \\ 10, generator \\ SafeString) do
shorten = generator.generate(length) shorten = generator.generate(length)
@ -30,32 +14,32 @@ defmodule LinkShortener.Links do
end end
def insert_one(attrs) do def insert_one(attrs) do
%Links{} %Link{}
|> Links.changeset(attrs) |> Link.changeset(attrs)
|> Repo.insert() |> Repo.insert()
end end
def edit_one(id) do def edit_one(id) do
get_one(id) get_one(id)
|> Links.changeset() |> Link.changeset()
end end
def update_one(%Links{} = Links, changes) do def update_one(%Link{} = link, changes) do
Links Link
|> Links.changeset(changes) |> Link.changeset(changes)
|> Repo.update() |> Repo.update()
end end
def insert_one(attrs) do def insert_one(attrs) do
%Links{} %Link{}
|> Links.changeset(attrs) |> Link.changeset(attrs)
|> Repo.insert() |> Repo.insert()
end end
def delete_one(%Links{} = Links), do: Repo.delete(Links) def delete_one(%Link{} = link), do: Repo.delete(link)
def get_one_by(attrs) do def get_one_by(attrs) do
Repo.get_by(Links, attrs) Repo.get_by(Link, attrs)
end end
def get_one_by_shorten(shorten) do def get_one_by_shorten(shorten) do
@ -63,11 +47,11 @@ defmodule LinkShortener.Links do
end end
def get_one(id) do def get_one(id) do
Repo.get!(Links, id) Repo.get!(Link, id)
end end
def get_all(opts) do def get_all(opts) do
from(Links) from(Link)
|> Repo.all() |> Repo.all()
end end
end end

Loading…
Cancel
Save