diff --git a/netbox/ipam/migrations/0084_prefix_ipam_prefix_delete_prefix_ipam_prefix_insert.py b/netbox/ipam/migrations/0084_prefix_ipam_prefix_delete_prefix_ipam_prefix_insert.py new file mode 100644 index 000000000..05ba17747 --- /dev/null +++ b/netbox/ipam/migrations/0084_prefix_ipam_prefix_delete_prefix_ipam_prefix_insert.py @@ -0,0 +1,47 @@ +# Generated by Django 5.2.5 on 2025-11-06 03:24 + +import pgtrigger.compiler +import pgtrigger.migrations +from django.db import migrations + +from development.utilities import disconnect_signals + + +class Migration(migrations.Migration): + + dependencies = [ + ('ipam', '0083_ipaddress_iprange_prefix_parent_data'), + ] + + operations = [ + migrations.RunPython(disconnect_signals, reverse_code=migrations.RunPython.noop), + pgtrigger.migrations.AddTrigger( + model_name='prefix', + trigger=pgtrigger.compiler.Trigger( + name='ipam_prefix_delete', + sql=pgtrigger.compiler.UpsertTriggerSql( + func="\n-- Update Child Prefix's with Prefix's PARENT\nUPDATE ipam_prefix SET parent_id=OLD.parent_id WHERE parent_id=OLD.id;\nRETURN OLD;\n", + hash='899e1943cb201118be7ef02f36f49747224774f2', + operation='DELETE', + pgid='pgtrigger_ipam_prefix_delete_e7810', + table='ipam_prefix', + when='BEFORE', + ), + ), + ), + pgtrigger.migrations.AddTrigger( + model_name='prefix', + trigger=pgtrigger.compiler.Trigger( + name='ipam_prefix_insert', + sql=pgtrigger.compiler.UpsertTriggerSql( + func="\nUPDATE ipam_prefix\nSET parent_id=NEW.id \nWHERE \n prefix << NEW.prefix\n AND\n (\n (vrf_id = NEW.vrf_id OR (vrf_id IS NULL AND NEW.vrf_id IS NULL))\n OR\n (\n NEW.vrf_id IS NULL\n AND\n NEW.status = 'container'\n AND\n NOT EXISTS(\n SELECT 1 FROM ipam_prefix p WHERE p.prefix >> ipam_prefix.prefix AND p.vrf_id = ipam_prefix.vrf_id\n )\n )\n )\n AND id != NEW.id\n AND NOT EXISTS (\n SELECT 1 FROM ipam_prefix p\n WHERE\n p.prefix >> ipam_prefix.prefix\n AND p.prefix << NEW.prefix\n AND (\n (p.vrf_id = ipam_prefix.vrf_id OR (p.vrf_id IS NULL AND ipam_prefix.vrf_id IS NULL))\n OR\n (p.vrf_id IS NULL AND p.status = 'container')\n )\n AND p.id != NEW.id\n )\n;\nRETURN NEW;\n", + hash='0e05bbe61861227a9eb710b6c94bae9e0cc7119e', + operation='INSERT', + pgid='pgtrigger_ipam_prefix_insert_46c72', + table='ipam_prefix', + when='AFTER', + ), + ), + ), + migrations.RunPython(migrations.RunPython.noop, reverse_code=disconnect_signals), + ]