defmodule Localiser.Domain.Schema.Sensor do use Ecto.Schema import Ecto.Changeset alias Localiser.Domain.Schema.Room alias Localiser.Domain.Schema.SensorCalibration schema "sensors" do field :sensor_id, :string field :confirmed, :boolean, default: false field :x, :float field :y, :float field :floor_x, :float, virtual: true field :floor_y, :float, virtual: true belongs_to :room, Room has_many :calibrations, SensorCalibration timestamps(type: :utc_datetime) end @doc false def changeset(sensor, attrs) do sensor |> cast(attrs, [:sensor_id, :confirmed, :room_id, :x, :y]) |> validate_required([:sensor_id]) |> unique_constraint(:sensor_id) |> assoc_constraint(:room) end end