Files
localiserd/lib/localiser/domain/floors.ex
T

52 lines
1.1 KiB
Elixir

defmodule Localiser.Domain.Floors do
import Ecto.Query
alias Localiser.Repo
alias Localiser.Domain.Schema.Floor
def list_floors do
Repo.all(Floor)
end
def get_floor!(id), do: Repo.get!(Floor, id)
def create_floor(attrs) do
case %Floor{} |> Floor.changeset(attrs) |> Repo.insert() do
{:ok, floor} ->
Phoenix.PubSub.broadcast(Localiser.PubSub, "floors", {:floor_created, floor})
{:ok, floor}
error ->
error
end
end
def update_floor(%Floor{} = floor, attrs) do
case floor |> Floor.changeset(attrs) |> Repo.update() do
{:ok, floor} ->
Phoenix.PubSub.broadcast(Localiser.PubSub, "floors", {:floor_updated, floor})
{:ok, floor}
error ->
error
end
end
def delete_floor(%Floor{} = floor) do
case Repo.delete(floor) do
{:ok, deleted} ->
Phoenix.PubSub.broadcast(Localiser.PubSub, "floors", {:floor_deleted, deleted.id})
{:ok, deleted}
error ->
error
end
end
def list_floors_with_rooms do
Floor
|> preload(:rooms)
|> Repo.all()
end
end