diff --git a/lib/link_shortener/links.ex b/lib/link_shortener/links.ex index 375b7d3..895c093 100644 --- a/lib/link_shortener/links.ex +++ b/lib/link_shortener/links.ex @@ -1,6 +1,9 @@ defmodule LinkShortener.Links do use Ecto.Schema import Ecto.Changeset + import Ecto.Query + alias LinkShortener.Repo + alias LinkShortener.Links schema "links" do field :name, :string @@ -15,4 +18,48 @@ defmodule LinkShortener.Links do |> cast(attrs, [:name, :url]) |> validate_required([:name, :url]) end + + def new_one(), do: Links.changeset(%Links{}) + + def insert_one(attrs) do + %Links{} + |> Links.changeset(attrs) + |> Repo.insert() + end + + def edit_one(id) do + get_one(id) + |> Links.changeset() + end + + def update_one(%Links{} = Links, changes) do + Links + |> Links.changeset(changes) + |> Repo.update() + end + + def insert_one(attrs) do + %Links{} + |> Links.changeset(attrs) + |> Repo.insert() + end + + def delete_one(%Links{} = Links), do: Repo.delete(Links) + + def get_one_by(attrs) do + Repo.get_by(Links, attrs) + end + + def get_one_by_name(name) do + get_one_by(%{name: name}) + end + + def get_one(id) do + Repo.get!(Links, id) + end + + def get_all(opts) do + from(Links) + |> Repo.all() + end end