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