From 697f06a1a2d6fa8036cfcf22dd923e3735a06cd2 Mon Sep 17 00:00:00 2001
From: Sara <sarasdj@stud.ntnu.no>
Date: Wed, 14 Feb 2024 13:56:07 +0100
Subject: [PATCH] update: schema, db and parsing to JSON

---
 .../__pycache__/get_markers.cpython-311.pyc   | Bin 3282 -> 3153 bytes
 server/map/get_markers.py                     |  38 ++++++++++--------
 server/sql_db/icedb                           | Bin 32768 -> 32768 bytes
 server/sql_db/schema.sql                      |  10 ++---
 4 files changed, 27 insertions(+), 21 deletions(-)

diff --git a/server/map/__pycache__/get_markers.cpython-311.pyc b/server/map/__pycache__/get_markers.cpython-311.pyc
index 09577cf8e7125f13454aa159548ac4e9b12001dd..f74b266039fe4266ffa62d64876b10b36f5ecbbd 100644
GIT binary patch
delta 1091
zcmZ`%TSyd97(Qq2m%WVcHtwn$6M{9OVOkKCk++pHEeR6sY4Mn3r7*ii#BBBuw20xu
zc}Qr2ddY4NK`%i>5!jQID}swpLQhLU6V^+;^v|x#+U-AczWKlZ{5Sq{mZRB7eBSR@
z5Xi9?i=+E|2z~TONtjJ#BMi!IL=eFj&@dv*4K$1iK7~v+@458TcC0fJM~83%FVL6x
z>=7b6LRzpnqC_{7AOuV;GvafYv}p4-dl^}sHf!@+&iu5GY0>^L2Ee%Eg!lj>^aOTM
zFq)Z#BpeBr!+~kPv5GQFiKWOwLzVOu6OD!())vOFEskLlcAzDjKLl<w@8~C{9ZR%{
zZKZK8NGI8<-fe%@Cwf{YRcU1+LLzB7RZ-4AE|+v$BHYvH0~qL&(oj)ap;>lYo0<xi
zybvPQwt5HMW&T%V2reP5UQ;Ke;-A)Wby%i7oXOUZTAJj}V1<6*s>E0^1AWctDuy7q
ztL^=X&osb4rf+$@vr#ermXY0^lh(wjb+oI|DCx%&sdK4IWOR#Va$?Lg(N%t)9u$I7
zF~}I9Cj}jk&@tfvV+!=4(6c8GFAC-T048I3@61vG*0`=jDzPRO<C1xAB6;sZ^D^Z`
z6Z3SpSg%%k?jeAyP4vFl^!%pCW9*~1q@$vLq|hdPFPXeo!Jt2-!KuTb@vxKQknlQk
znQqM2tV@B}z;wVxQpEQaNwWW&2S5SBNYiJhrl+z&V<l*0xb>RYk`!?T6ppy4POdCK
zrZX2a?o~LaGySfFK*dgc(~_%>%_W@rO-2{xK!fWSYoHiFrq|UycgE@Q94ehbmuF*e
z29W7<ee{dmup_4#_qMNS&CjAM+QC(=V_EBX)0Wi+R<wbo!bfYB{k1uxX>Q65DSM$K
zfF&;|t2Hla&EKn^pI3I`E8X?oCR#9+c!*tS)#Cy7U4RE2hQ131VtJE!gf;+?)duiG
pI&^W8T)HrN*lGvrjXv23;IbIw98#|rmMisR+~T5tqjdxVegRK%^o;-j

delta 1289
zcmZ`%&2Jk;6o0d`-Y<Ww-H^nIF|`{M%cX=AIJCk=YMT~HP!1F&s)=fCGuzgYKccnM
zP_)JdRZ0|D3eg-0#R#9$098fXe}F?PgoKb?`C#n<EOE-sC~$y7#jG9E8o`@+znR~>
z_vX#KnY#bc$m}h*TLC8D-~CblnazH+Nl%3R$=+i&`4k8cl!AD7L~+D8m*UbmjuGgv
z$oImk4!Vg4!k`P=2;dv0U5Sf*UXtyl_D9P0+ELI&g10#q%d{*1+DXyTQ~8{B)GX*q
zzZdGB)D?FT{szR|1f7SdW7pnrCW<V1F_+CGmh;Kf2i(NO!au2)S!Rlv?%lzg7d5oC
z`Q7CsCQsxMw$>G*RK$W{I!t^Gj6)_i9Z%VubO(j$D)K#FCd`E=t|vyu+<i=@kI~3W
zo+oSlmmq2do5B@DycOO~6Jz<ypV7CtlSrgx?iKn2Qt40J@U*W#j$QshK_UYMIpZhK
z6r{YbcXWV7`+glUMZ(`6>@RgerjvMZTFI+DF90%RDxbp_-2dgcz)D?EK2$PNcU(a$
z@IJl(E69Xu=Xo%g65Ym8JWTxb5q=NLRj>VQ7{~}c%a8G+Gg_La`L7R>iPKplqZ>y;
zxry_7CYLqdy}qQ|?Bqf|d5tbPZqa#ROx(3^5f$l2!W)B@(2cS9DJ`$<+Fx#$qkjrf
z#M3cx{Qiu13?V07mCn&$q%iMfcIuGligq<!Omi=?=PyB<JMIXyB+rIt-O~oa@A?e{
z+5Ni>j56?ocW9%yUaYI3h8kMqTY+Fr^0x+t+b}90=)l_PW-wIsRc6;_TF)M=qRQEQ
z-W&~XX_fIFiyYoLN?Wo#xWC?3r2tFHU~RfRL<f|^xaNJEUQ~_^w|(-fY;y)RZ>aiQ
z-8)(HPX6J)e@}^^;?(h}7(9q6XU6eEVdzX4KMXtAJnFHyY|g^D>p6?R#D2PAe`t$e
z((+d=ktB_bmewsPk+_^p>4}8pTv#>?J(Eu`lO<}Gavev0F`LX-%97SI8DX}I5wXFp
z-B(cDV*?nkG5AZ0rL$x?rN3^RW7K|x+)V~;j1X#qT<WwYD5Xwo!f36(w>;kRm5uCr
zcI#^06KQxNC1=yEmghDS>xr#*Dsx}X-<;oh;oE#Y7;6M$b@z#e`^2e|(gb`%T2((*
fKT+xsXh5I_fhIUhoz|94A@p(^{u_-q+4=qkR&+6_

diff --git a/server/map/get_markers.py b/server/map/get_markers.py
index 1ca3bc89..ff121d91 100644
--- a/server/map/get_markers.py
+++ b/server/map/get_markers.py
@@ -1,10 +1,3 @@
-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'))
+
diff --git a/server/sql_db/icedb b/server/sql_db/icedb
index 14130a77d22b6a5d213bd3487b9891db3d273b4e..e9e55c8afd162410d4f26f2806f5bc5f6fa662ae 100644
GIT binary patch
delta 114
zcmZo@U}|V!njkI6$H2hA0mLxCHc`h|nvX%Rtdp1j2Ln6z8V0@}{0I5md2aK`aj)T7
zx3STPo2#*&ja^()lCe2*@*(a}1?T*tywoC}#FEUC(v(yMHy?k;5FIWBAb`kh*5<id
F3;?Nv9kBoa

delta 86
zcmZo@U}|V!njkI6!@$760mLxCGEv7^nukHJtdp1j2Ln6z4hFs-{0I5md2aK`aqr++
jw^>lYj+?8on2lXrQj)RRaq>3q(8)@?nwuSX4ip0b*Xk3p

diff --git a/server/sql_db/schema.sql b/server/sql_db/schema.sql
index 3cc5ae4b..d3a639c2 100644
--- a/server/sql_db/schema.sql
+++ b/server/sql_db/schema.sql
@@ -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),
-- 
GitLab