diff --git a/lib/towerops/snmp/sensor_reading.ex b/lib/towerops/snmp/sensor_reading.ex index bc24c855..4df599c9 100644 --- a/lib/towerops/snmp/sensor_reading.ex +++ b/lib/towerops/snmp/sensor_reading.ex @@ -41,6 +41,12 @@ defmodule Towerops.Snmp.SensorReading do |> cast(attrs, [:sensor_id, :value, :status, :state_descr, :checked_at]) |> validate_required([:sensor_id, :status, :checked_at]) |> validate_inclusion(:status, ["ok", "warning", "critical", "error"]) + |> validate_state_descr() |> foreign_key_constraint(:sensor_id) end + + # Validate state_descr when present - ensure it's not empty and has reasonable length + defp validate_state_descr(changeset) do + validate_length(changeset, :state_descr, min: 1, max: 255) + end end