29 lines
638 B
Elixir
29 lines
638 B
Elixir
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
|
|
field :height, :float
|
|
field :offset_x, :float
|
|
field :offset_y, :float
|
|
|
|
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, :offset_x, :offset_y])
|
|
|> validate_required([:name, :floor_id])
|
|
|> assoc_constraint(:floor)
|
|
end
|
|
end
|