diff libervia/backend/memory/sqla_mapping.py @ 4389:4895cf954fbe

memory (sqla): add "parent_node_id" and "linked_mode_id" to PubsubNode: This is to prepare for the implementation of XEP-0496 and XEP-0499. rel 463
author Goffi <goffi@goffi.org>
date Fri, 29 Aug 2025 17:59:12 +0200
parents a1ac33fe6b97
children
line wrap: on
line diff
--- a/libervia/backend/memory/sqla_mapping.py	Fri Aug 29 11:44:43 2025 +0200
+++ b/libervia/backend/memory/sqla_mapping.py	Fri Aug 29 17:59:12 2025 +0200
@@ -653,10 +653,37 @@
     subtype = Column(Text, nullable=True)
     extra = Column(JSON)
 
+    linked_node_id = Column(Integer, ForeignKey("pubsub_nodes.id", ondelete="CASCADE"), nullable=True)
+    parent_node_id = Column(Integer, ForeignKey("pubsub_nodes.id", ondelete="CASCADE"), nullable=True)
+
     items = relationship("PubsubItem", back_populates="node", passive_deletes=True)
     affiliations = relationship("PubsubAffiliation", back_populates="node", passive_deletes=True)
     subscriptions = relationship("PubsubSub", back_populates="node", passive_deletes=True)
 
+    linked_node = relationship(
+        "PubsubNode",
+        remote_side=[id],
+        foreign_keys=[linked_node_id],
+        back_populates="linking_nodes"
+    )
+    linking_nodes = relationship(
+        "PubsubNode",
+        foreign_keys=[linked_node_id],
+        back_populates="linked_node",
+    )
+
+    parent_node = relationship(
+        "PubsubNode",
+        remote_side=[id],
+        foreign_keys=[parent_node_id],
+        back_populates="child_nodes"
+    )
+    child_nodes = relationship(
+        "PubsubNode",
+        foreign_keys=[parent_node_id],
+        back_populates="parent_node",
+    )
+
     def __str__(self):
         return f"Pubsub node {self.name!r} at {self.service}"