towerops/lib/towerops/alerts/alert.ex
2025-12-21 17:29:01 -06:00

38 lines
989 B
Elixir

defmodule Towerops.Alerts.Alert do
@moduledoc false
use Ecto.Schema
import Ecto.Changeset
@primary_key {:id, :binary_id, autogenerate: true}
@foreign_key_type :binary_id
schema "alerts" do
field :alert_type, Ecto.Enum, values: [:equipment_down, :equipment_up]
field :triggered_at, :utc_datetime
field :acknowledged_at, :utc_datetime
field :resolved_at, :utc_datetime
field :message, :string
belongs_to :equipment, Towerops.Equipment.Equipment
belongs_to :acknowledged_by, Towerops.Accounts.User
timestamps(type: :utc_datetime)
end
@doc false
def changeset(alert, attrs) do
alert
|> cast(attrs, [
:equipment_id,
:alert_type,
:triggered_at,
:acknowledged_at,
:acknowledged_by_id,
:resolved_at,
:message
])
|> validate_required([:equipment_id, :alert_type, :triggered_at])
|> foreign_key_constraint(:equipment_id)
|> foreign_key_constraint(:acknowledged_by_id)
end
end