36 lines
866 B
Elixir
36 lines
866 B
Elixir
defmodule Sukaato.Post do
|
|
use Ecto.Schema
|
|
import Ecto.Changeset
|
|
# import Sukaato.CustomValidators
|
|
|
|
schema "posts" do
|
|
field :title, :string
|
|
field :cat, :string
|
|
field :abst, :string
|
|
field :slug, :string
|
|
field :content, :string
|
|
field :tags, {:array, :string}
|
|
field :ledit, :utc_datetime
|
|
field :auth_id, :id
|
|
field :rev_id, :id
|
|
|
|
timestamps(type: :utc_datetime)
|
|
end
|
|
|
|
@doc false
|
|
def changeset(post, attrs) do
|
|
post
|
|
|> cast(attrs, [:title, :abst, :slug, :content, :tags, :cat, :ledit])
|
|
|> validate_required([:title, :content, :cat, :ledit])
|
|
|> validate_format(:cat, ~r/^(\.(\w)+)+/)
|
|
|> unique_constraint(:title)
|
|
|> gen_slug()
|
|
end
|
|
|
|
defp gen_slug(changeset) do
|
|
slug = changeset.changes.title |> String.downcase() |> String.replace(" ", "-")
|
|
|
|
put_change(changeset, :slug, slug)
|
|
end
|
|
end
|