28 lines
613 B
Elixir
28 lines
613 B
Elixir
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 :x, :float
|
|
field :y, :float
|
|
|
|
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, :room_id, :x, :y])
|
|
|> validate_required([:sensor_id])
|
|
|> unique_constraint(:sensor_id)
|
|
|> assoc_constraint(:room)
|
|
end
|
|
end
|