feat: dynamically manage floors/rooms/tags

This commit is contained in:
2026-04-16 16:57:45 +02:00
parent 34ddbe669e
commit c3fd8b950c
11 changed files with 238 additions and 22 deletions
+31 -7
View File
@@ -3,6 +3,7 @@ defmodule Localiser.Domain.Rooms do
alias Localiser.Repo
alias Localiser.Domain.Schema.Room
alias Localiser.Domain.Schema.Sensor
def list_rooms do
Repo.all(Room)
@@ -17,18 +18,41 @@ defmodule Localiser.Domain.Rooms do
def get_room!(id), do: Repo.get!(Room, id)
def create_room(attrs) do
%Room{}
|> Room.changeset(attrs)
|> Repo.insert()
case %Room{} |> Room.changeset(attrs) |> Repo.insert() do
{:ok, room} ->
Phoenix.PubSub.broadcast(Localiser.PubSub, "rooms", {:room_created, room})
{:ok, room}
error ->
error
end
end
def update_room(%Room{} = room, attrs) do
room
|> Room.changeset(attrs)
|> Repo.update()
case room |> Room.changeset(attrs) |> Repo.update() do
{:ok, room} ->
Phoenix.PubSub.broadcast(Localiser.PubSub, "rooms", {:room_updated, room})
{:ok, room}
error ->
error
end
end
def delete_room(%Room{} = room) do
Repo.delete(room)
sensors = Repo.all(from s in Sensor, where: s.room_id == ^room.id)
case Repo.delete(room) do
{:ok, deleted} ->
Enum.each(sensors, fn s ->
Phoenix.PubSub.broadcast(Localiser.PubSub, "sensors", {:sensor_unenrolled, s.sensor_id})
end)
Phoenix.PubSub.broadcast(Localiser.PubSub, "rooms", {:room_deleted, deleted.id, deleted.floor_id})
{:ok, deleted}
error ->
error
end
end
end