37 lines
635 B
Elixir
37 lines
635 B
Elixir
defmodule Core.Posts do
|
|
@moduledoc false
|
|
import Ecto.Changeset
|
|
import Ecto.Query
|
|
|
|
alias Core.Repo
|
|
|
|
def changeset(%Schema.Post{} = post, attrs) do
|
|
post
|
|
|> cast(attrs, [:title, :body])
|
|
|> validate_required([:body])
|
|
end
|
|
|
|
def create_post(attrs) do
|
|
%Schema.Post{}
|
|
|> changeset(attrs)
|
|
|> Repo.insert()
|
|
end
|
|
|
|
def update_post(post, attrs) do
|
|
post
|
|
|> changeset(attrs)
|
|
|> Repo.update()
|
|
end
|
|
|
|
def get_post!(id) do
|
|
Repo.get!(Schema.Post, id)
|
|
end
|
|
|
|
def list_posts do
|
|
query =
|
|
from post in Schema.Post,
|
|
order_by: [desc: post.inserted_at]
|
|
|
|
Repo.all(query)
|
|
end
|
|
end
|