Skip to content
Snippets Groups Projects
Commit 697f06a1 authored by Sara Savanovic Djordjevic's avatar Sara Savanovic Djordjevic
Browse files

update: schema, db and parsing to JSON

parent 21d66318
No related branches found
No related tags found
No related merge requests found
No preview for this file type
import os
import sys
from bson import json_util
current_dir = os.path.dirname(__file__)
parent_dir = os.path.abspath(os.path.join(current_dir, '..'))
sys.path.append(parent_dir)
import json
......@@ -14,48 +7,60 @@ def get_all_markers(self, cursor):
# Fetch all data
cursor.execute('''
SELECT m.MeasurementID, m.SensorID, m.TimeMeasured, d.Latitude, d.Longitude,
d.IceTop, d.IceBottom, d.CalculatedThickness, d.Accuracy, d.Corner, s.SensorType, s.Active
d.IceTop, d.IceBottom, d.CalculatedThickness, d.Accuracy, s.SensorType, s.Active,
c.CornerID, c.CornerLatitude, c.CornerLongitude
FROM Measurement m
INNER JOIN Sensor s ON m.SensorID = s.SensorID
INNER JOIN Data d ON m.MeasurementID = d.MeasurementID
INNER JOIN Corner c ON m.MeasurementID = c.MeasurementID
''')
rows = cursor.fetchall()
measurement_data = {}
# Iterate over the fetched rows
for row in rows:
measurement_id = row[0]
# Create a data object for current row
data_object = {
'Latitude': row[3],
'Longitude': row[4],
'IceTop': row[5],
'IceBottom': row[6],
'CalculatedThickness': row[7],
'Accuracy': row[8],
'Corner': row[9]
'Accuracy': row[8]
}
# Append data with measurement ID x to measurement x object
# Create a corner object for current row
corner_object = {
'Latitude': row[12],
'Longitude': row[13]
}
# If measurement ID already exists in measurement_data, append data and corner
if measurement_id in measurement_data:
measurement_data[measurement_id]['Data'].append(data_object)
measurement_data[measurement_id]['Corners'].append(corner_object)
else:
# Create a new measurement entry if measurement ID doesn't exist already
# Create a new entry for measurement_id if it does not already exist in the list
measurement_data[measurement_id] = {
'MeasurementID': measurement_id,
'TimeMeasured': row[1],
'TimeMeasured': row[2],
'Sensor': {
'SensorID': row[2],
'SensorID': row[1],
'SensorType': row[9],
'Active': bool(row[10])
},
'Data': [data_object]
'Data': [data_object],
'Corners': [corner_object]
}
# Convert dictionary values to list of measurements
data = list(measurement_data.values())
if len(rows) == 0 or len(data) == 0: # Return 500 and empty list if no data is found
if len(rows) == 0 or len(data) == 0: # Return 500 and empty list if no data is found
print(f"An error occurred while querying the database")
resp_code = 500
marker_json = '[]'
......@@ -76,3 +81,4 @@ def get_all_markers(self, cursor):
# Write marker_data to the response object
self.wfile.write(marker_json.encode('utf-8'))
No preview for this file type
......@@ -26,8 +26,8 @@ CREATE TABLE Data (
CREATE TABLE Corner (
CornerID INT,
MeasurementID INT,
Latitude FLOAT,
Longitude FLOAT,
CornerLatitude FLOAT,
CornerLongitude FLOAT,
PRIMARY KEY (CornerID, MeasurementID),
FOREIGN KEY (MeasurementID) REFERENCES Measurement(MeasurementID)
);
......@@ -50,7 +50,7 @@ INSERT INTO Data (MeasurementID, Latitude, Longitude, IceTop, IceBottom, Calcula
(1, 60.7062, 10.9774, 7.5, 2.5, 5.0, 1.0),
(1, 60.7067, 10.9775, 7.0, 2.0, 5.0, 1.0);
INSERT INTO Corner (CornerID, MeasurementID, Latitude, Longitude) VALUES
INSERT INTO Corner (CornerID, MeasurementID, CornerLatitude, CornerLongitude) VALUES
(1, 1, 60.7060, 10.9770),
(2, 1, 60.7061, 10.9771),
(3, 1, 60.7062, 10.9772),
......@@ -65,7 +65,7 @@ INSERT INTO Data (MeasurementID, Latitude, Longitude, IceTop, IceBottom, Calcula
(2, 60.6367, 10.8173, 7.4, 2.4, 5.0, 1.5),
(2, 60.6367, 10.8179, 7.5, 2.5, 5.0, 1.5);
INSERT INTO Corner (CornerID, MeasurementID, Latitude, Longitude) VALUES
INSERT INTO Corner (CornerID, MeasurementID, CornerLatitude, CornerLongitude) VALUES
(1, 2, 60.6360, 10.8170),
(2, 2, 60.6361, 10.8171),
(3, 2, 60.6362, 10.8172),
......@@ -79,7 +79,7 @@ INSERT INTO Data (MeasurementID, Latitude, Longitude, IceTop, IceBottom, Calcula
(3, 60.7368, 10.8481, 7.2, 2.2, 5.0, 2.5),
(3, 60.7370, 10.8475, 7.1, 2.1, 5.0, 2.5);
INSERT INTO Corner (CornerID, MeasurementID, Latitude, Longitude) VALUES
INSERT INTO Corner (CornerID, MeasurementID, CornerLatitude, CornerLongitude) VALUES
(1, 3, 60.7360, 10.8470),
(2, 3, 60.7361, 10.8471),
(3, 3, 60.7362, 10.8472),
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment