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>
Rename the controller and the view names to "Link".
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
import Ecto.Changeset
import Ecto.Query
alias LinkShortener.Repo
alias LinkShortener.Links
alias LinkShortener.Links.Link
alias LinkShortener.Generators.SafeString
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
def new_one(), do: Links.changeset(%Links{})
def new_one(), do: Link.changeset(%Link{})
def create_one(attrs, length \\ 10, generator \\ SafeString) do
shorten = generator.generate(length)
@ -30,32 +14,32 @@ defmodule LinkShortener.Links do
end
def insert_one(attrs) do
%Links{}
|> Links.changeset(attrs)
%Link{}
|> Link.changeset(attrs)
|> Repo.insert()
end
def edit_one(id) do
get_one(id)
|> Links.changeset()
|> Link.changeset()
end
def update_one(%Links{} = Links, changes) do
Links
|> Links.changeset(changes)
def update_one(%Link{} = link, changes) do
Link
|> Link.changeset(changes)
|> Repo.update()
end
def insert_one(attrs) do
%Links{}
|> Links.changeset(attrs)
%Link{}
|> Link.changeset(attrs)
|> Repo.insert()
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
Repo.get_by(Links, attrs)
Repo.get_by(Link, attrs)
end
def get_one_by_shorten(shorten) do
@ -63,11 +47,11 @@ defmodule LinkShortener.Links do
end
def get_one(id) do
Repo.get!(Links, id)
Repo.get!(Link, id)
end
def get_all(opts) do
from(Links)
from(Link)
|> Repo.all()
end
end

Loading…
Cancel
Save