towerops/lib/towerops/profiles/device_oid.ex
Graham McIntire a4e08b2aca Major codebase cleanup: DRY schemas, remove dead config, consolidate modules
- Created Towerops.Schema base macro (95+ schemas updated to use it)
- Created Towerops.Snmp.Reading macro (7 reading schemas consolidated)
- Created Towerops.Gaiia.BaseSchema macro (4 Gaiia schemas consolidated)
- Created Towerops.SyncLog shared module (UISP + Preseem merge)
- Created Towerops.LogFilters (3 log filter modules merged into 1)
- Created Towerops.OnCall.ChangesetHelpers (9 on-call schemas simplified)
- Created API v1 ResourceController shared helpers (7 controllers)
- Extracted ConnectionHelpers.format_connection_result (2 LiveViews)
- Removed 5 dead config keys (scopes, mib_dirs, stripe_meter_id, etc.)
- Fixed 2 pre-existing broken tests
- All 13,219 tests pass, Credo clean (0 issues)
2026-06-16 15:29:22 -05:00

26 lines
672 B
Elixir

defmodule Towerops.Profiles.DeviceOid do
@moduledoc """
Schema for device identification OIDs.
Maps device info fields (serial_number, firmware_version, etc.) to MIB names.
"""
use Towerops.Schema
alias Towerops.Profiles.DeviceProfile
schema "profile_device_oids" do
field :field, :string
field :mib_name, :string
belongs_to :profile, DeviceProfile, foreign_key: :profile_id
timestamps(type: :utc_datetime)
end
def changeset(device_oid, attrs) do
device_oid
|> cast(attrs, [:field, :mib_name, :profile_id])
|> validate_required([:field, :mib_name, :profile_id])
|> unique_constraint([:profile_id, :field])
end
end