|
|
@ -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
|
|
|
|