From 23cde5d777294e2794481a426a0a2c7d8bc7e7da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20M=C3=BCller?= <j.mueller@vr.rwth-aachen.de> Date: Thu, 5 Mar 2020 16:51:48 +0100 Subject: [PATCH] Add missing implementations for Arbor controller --- access_node/__main__.py | 16 ++++++++----- access_node/controllers/arbor_controller.py | 26 +++++++++++++++------ 2 files changed, 29 insertions(+), 13 deletions(-) diff --git a/access_node/__main__.py b/access_node/__main__.py index 16aa09c..ce24a47 100644 --- a/access_node/__main__.py +++ b/access_node/__main__.py @@ -76,19 +76,23 @@ def SetupArborTables(postgres_username, postgres_password, port): FOREIGN KEY (CELL_ID) REFERENCES CELLS (CELL_ID), );''') + cur.execute('''CREATE TABLE ATTRIBUTES ( + ATTRIBUTE_ID INT PRIMARY KEY NOT NULL UNIQUE, + NAME VARCHAR(50) NOT NULL, + );''') + cur.execute('''CREATE TABLE PROBES ( PROBE_ID INT PRIMARY KEY NOT NULL UNIQUE, CELL_ID INT NOT NULL, SEGMENT_ID INT NOT NULL, POSITION FLOAT, - NODE_ID INT, + ATTRIBUTE_ID INT NOT NULL, + NODE_ID INT, FOREIGN KEY (NODE_ID) REFERENCES ARBOR_SIMULATION_NODES (NODE_ID), - FOREIGN KEY (CELL_ID) REFERENCES CELLS (CELL_ID));''') + FOREIGN KEY (CELL_ID) REFERENCES CELLS (CELL_ID), + FOREIGN KEY (ATTRIBUTE_ID) REFERENCES ATTRIBUTES (ATTRIBUTE_ID));''') - cur.execute('''CREATE TABLE ATTRIBUTES ( - ATTRIBUTE_ID INT PRIMARY KEY NOT NULL UNIQUE, - NAME VARCHAR(50) NOT NULL, - );''') + con.commit() con.close() diff --git a/access_node/controllers/arbor_controller.py b/access_node/controllers/arbor_controller.py index aa3fe5b..4a74cee 100644 --- a/access_node/controllers/arbor_controller.py +++ b/access_node/controllers/arbor_controller.py @@ -157,15 +157,27 @@ def arbor_get_probes(attribute=None): # noqa: E501 con = connect_to_database() cur = con.cursor() - # TODO Multiple Attributes per Probe possible? - Complete this - if attribute == None: - cur.execute("SELECT PROBE_ID, CELL_ID, SEGMENT_ID, POSITION FROM PROBES") - - - + cur.execute('''SELECT + PROBES.PROBE_ID, + PROBES.CELL_ID, + PROBES.SEGMENT_ID, + PROBES.POSITION, + FROM PROBES''') + else: + cur.execute('''SELECT + PROBES.PROBE_ID, + PROBES.CELL_ID, + PROBES.SEGMENT_ID, + PROBES.POSITION, + FROM PROBES INNER JOIN ATTRIBUTES + ON PROBES.ATTRIBUTE_ID = ATTRIBUTES.ATTRIBUTE_ID + WHERE ATTRIBUTES.NAME = %s''', (attribute,)) + + probes = np.array(cur.fetchall()) con.close() - return + + return [Probe(*probe) for probe in probes] def arbor_get_simulation_time_info(): # noqa: E501 -- GitLab