diff --git a/access_node/__main__.py b/access_node/__main__.py index 16aa09c4e702d0b2de99397f5f73280c0d36d3a7..ce24a4747ad646eeb9ca766f6b0c81b57e35f692 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 aa3fe5b4a91017e01b9f0805f6a6fa2b6dea002e..4a74cee84c871a0ae1ad2d987a0b649b4bb5baed 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