fix: sensor schema drift

This commit is contained in:
2026-05-13 20:28:21 +02:00
parent b1c7ded7ab
commit ecc0870cae
4 changed files with 26 additions and 7 deletions
+20 -2
View File
@@ -6,7 +6,10 @@ defmodule Localiser.Domain.Sensors do
alias Localiser.Domain.Schema.SensorCalibration
def list_sensors do
Repo.all(Sensor)
Sensor
|> Repo.all()
|> Repo.preload(:room)
|> Enum.map(&populate_floor_coords/1)
end
def list_unplaced do
@@ -28,7 +31,12 @@ defmodule Localiser.Domain.Sensors do
|> Repo.all()
end
def get_sensor!(id), do: Repo.get!(Sensor, id)
def get_sensor!(id) do
Sensor
|> Repo.get!(id)
|> Repo.preload(:room)
|> populate_floor_coords()
end
def get_sensor_by_sensor_id(sensor_id) do
Repo.get_by(Sensor, sensor_id: sensor_id)
@@ -108,6 +116,7 @@ defmodule Localiser.Domain.Sensors do
def place_sensor(%Sensor{} = sensor, room_id, {x, y}) do
with {:ok, sensor} <- update_sensor(sensor, %{room_id: room_id, x: x, y: y}) do
room = Repo.preload(sensor, :room).room
sensor = populate_floor_coords(%{sensor | room: room})
Phoenix.PubSub.broadcast(Localiser.PubSub, "sensors", {:sensor_enrolled, sensor, room})
{:ok, sensor}
end
@@ -121,4 +130,13 @@ defmodule Localiser.Domain.Sensors do
{:ok, sensor}
end
end
defp populate_floor_coords(%Sensor{room: nil} = sensor), do: sensor
defp populate_floor_coords(%Sensor{room: room} = sensor) do
%{sensor |
floor_x: (room.x || 0.0) + (sensor.x || 0.0),
floor_y: (room.y || 0.0) + (sensor.y || 0.0)
}
end
end