defmodule Core.Statuses do
  @moduledoc false
  import Ecto.Changeset
  import Ecto.Query

  alias Core.Repo

  def changeset(%Schema.Status{} = status, attrs \\ %{}) do
    status
    |> cast(attrs, [:body])
    |> validate_required([:body])
  end

  def create_status(attrs) do
    %Schema.Status{}
    |> changeset(attrs)
    |> Repo.insert()
  end

  def update_status(status, attrs) do
    status
    |> changeset(attrs)
    |> Repo.update()
  end

  def get_status!(id) do
    Repo.get!(Schema.Status, id)
  end

  def list_statuses do
    query =
      from status in Schema.Status,
        order_by: [desc: status.inserted_at]

    Repo.all(query)
  end
end