From 41b7ac7b613a5299b75f49a04d6af9eb09d84fce Mon Sep 17 00:00:00 2001
From: gifrerenom <lluis.gifre@cttc.es>
Date: Tue, 28 Mar 2023 15:24:58 +0000
Subject: [PATCH] Context component:

- Improved device_set method reducing unneeded inserts
---
 src/context/service/database/Device.py | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/src/context/service/database/Device.py b/src/context/service/database/Device.py
index c51a88368..3e106bc15 100644
--- a/src/context/service/database/Device.py
+++ b/src/context/service/database/Device.py
@@ -171,7 +171,9 @@ def device_set(db_engine : Engine, request : Device) -> Tuple[Dict, bool]:
             endpoint_updates = session.execute(stmt).fetchall()
             updated_endpoints = any([(updated_at > created_at) for created_at,updated_at in endpoint_updates])
 
-        if len(related_topologies) > 0:
+        if not updated or len(related_topologies) > 1:
+            # Only update topology-device relations when device is created (not updated) or when endpoints are
+            # modified (len(related_topologies) > 1).
             session.execute(insert(TopologyDeviceModel).values(related_topologies).on_conflict_do_nothing(
                 index_elements=[TopologyDeviceModel.topology_uuid, TopologyDeviceModel.device_uuid]
             ))
-- 
GitLab