defmodule Localiser.Domain.Schema.Room do use Ecto.Schema import Ecto.Changeset alias Localiser.Domain.Schema.Floor alias Localiser.Domain.Schema.Sensor schema "rooms" do field :name, :string field :width, :float, default: 1.0 field :height, :float, default: 1.0 field :x, :float, default: 0.0 field :y, :float, default: 0.0 belongs_to :floor, Floor has_many :sensors, Sensor timestamps(type: :utc_datetime) end @doc false def changeset(room, attrs) do room |> cast(attrs, [:name, :floor_id, :width, :height, :x, :y]) |> validate_required([:name, :floor_id]) |> assoc_constraint(:floor) end end