38 lines
989 B
Elixir
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
|