diff --git a/priv/repo/migrations/20260212184424_add_device_role_to_devices.exs b/priv/repo/migrations/20260212184424_add_device_role_to_devices.exs new file mode 100644 index 00000000..abae593d --- /dev/null +++ b/priv/repo/migrations/20260212184424_add_device_role_to_devices.exs @@ -0,0 +1,10 @@ +defmodule Towerops.Repo.Migrations.AddDeviceRoleToDevices do + use Ecto.Migration + + def change do + alter table(:devices) do + add :device_role, :string + add :device_role_source, :string, default: "inferred" + end + end +end diff --git a/priv/repo/migrations/20260212184428_create_device_links.exs b/priv/repo/migrations/20260212184428_create_device_links.exs new file mode 100644 index 00000000..1823c292 --- /dev/null +++ b/priv/repo/migrations/20260212184428_create_device_links.exs @@ -0,0 +1,38 @@ +defmodule Towerops.Repo.Migrations.CreateDeviceLinks do + use Ecto.Migration + + def change do + create table(:device_links, primary_key: false) do + add :id, :binary_id, primary_key: true + + add :source_device_id, references(:devices, type: :binary_id, on_delete: :delete_all), + null: false + + add :target_device_id, references(:devices, type: :binary_id, on_delete: :delete_all) + + add :source_interface_id, + references(:snmp_interfaces, type: :binary_id, on_delete: :nilify_all) + + add :target_interface_id, + references(:snmp_interfaces, type: :binary_id, on_delete: :nilify_all) + + add :link_type, :string, null: false + add :confidence, :float, null: false, default: 0.5 + add :metadata, :map, default: %{} + add :discovered_remote_name, :string + add :discovered_remote_ip, :string + add :discovered_remote_mac, :string + add :last_confirmed_at, :utc_datetime, null: false + timestamps(type: :utc_datetime) + end + + create index(:device_links, [:source_device_id]) + create index(:device_links, [:target_device_id]) + + create unique_index( + :device_links, + [:source_device_id, :source_interface_id, :discovered_remote_mac], + name: :device_links_src_iface_remote_mac + ) + end +end diff --git a/priv/repo/migrations/20260212184432_create_device_link_evidence.exs b/priv/repo/migrations/20260212184432_create_device_link_evidence.exs new file mode 100644 index 00000000..6af2e95f --- /dev/null +++ b/priv/repo/migrations/20260212184432_create_device_link_evidence.exs @@ -0,0 +1,20 @@ +defmodule Towerops.Repo.Migrations.CreateDeviceLinkEvidence do + use Ecto.Migration + + def change do + create table(:device_link_evidence, primary_key: false) do + add :id, :binary_id, primary_key: true + + add :device_link_id, references(:device_links, type: :binary_id, on_delete: :delete_all), + null: false + + add :evidence_type, :string, null: false + add :evidence_data, :map, default: %{} + add :observed_at, :utc_datetime, null: false + timestamps(type: :utc_datetime) + end + + create index(:device_link_evidence, [:device_link_id]) + create index(:device_link_evidence, [:observed_at]) + end +end