From f05f8ce30db44ab40c606315c22f6881fc4c3421 Mon Sep 17 00:00:00 2001
From: Sara <sarasdj@stud.ntnu.no>
Date: Thu, 15 Feb 2024 13:04:43 +0100
Subject: [PATCH] fix: duplicate Data and Corner in Measurement

---
 .../__pycache__/get_weather.cpython-311.pyc   | Bin 2597 -> 2597 bytes
 .../__pycache__/get_markers.cpython-311.pyc   | Bin 4140 -> 4174 bytes
 server/map/get_markers.py                     |  35 ++++++++++--------
 3 files changed, 20 insertions(+), 15 deletions(-)

diff --git a/server/APIs/__pycache__/get_weather.cpython-311.pyc b/server/APIs/__pycache__/get_weather.cpython-311.pyc
index 7b401d0fc3d6e1bae0c899df6b313dddb5b91dbb..602de861966c2bd3b5af12b5f79d7b3a702e5025 100644
GIT binary patch
delta 19
ZcmZ1~vQ&g?IWI340}yck*~lf$1pqCo1TO#p

delta 19
ZcmZ1~vQ&g?IWI340}zD$+Q=o%1pqH%1b6@d

diff --git a/server/map/__pycache__/get_markers.cpython-311.pyc b/server/map/__pycache__/get_markers.cpython-311.pyc
index cd584e3466e900302483a0aead05cbe7de1f39b0..46facb818c457bb01157ffbd7d0c285473aad2e6 100644
GIT binary patch
delta 454
zcmZ3Za87}5IWI340}$-`dp6Zta3WtcW5vX*NsLb?{++6rT*F?&Qo|+*k_UqnJ_Ngr
zu}E?9WJYIs4m36VXlkx9Iy0`HEXkD1_-u1KlM)l-g2@5wBAfTI>|<o{adius+{kv0
zF#<!Zb@LZaerAyaObiSS3?G;x7+Iwsa0`535aSe_EY7QIBJh!clUMKyi1+{|#25s`
z`s=&uFY+r~;aBKjc_1x&fkWa08-s|%2L=sJAs{iif;YeZfw0^KHM0$MSJd1NlwDEt
zyC4igH$+qx#9a|F*${R`#OAt)^Cc1I1Kt-!0<MSzTo4HWnWA_>!(xZr6%CIQl2<f>
zF9?GWTvy~35&P>RZkI&d4%A*03B4i`dO;-g#|I7uHIo}E>MIzRxIKVSH#S@Gr8A1T
v$+;;q98=_S=Vm^pE#}U~e4LHdoqO_jemDI@Mn<C*A|Dt)G=8$k5g01~u1tnY

delta 354
zcmX@7uttGzIWI340}z=1I-9ycU?N{Mqs7FmNsLD){+-I`Jb5z^i!nJd_D_yv%4IyZ
z`8bmj6XU|o{p^<*C*S7ao_vh$1nWX31_rLlAKAqw|6xg+#KAt9jUx+0<#Tv~sO=mo
zAnF!}1BBw4+`wi7WAd|G!I;O`>?U!rY<|Vb&nz+pXk-J!2c}>~R_O=a0v{N}I3*|Z
z^6Cmmd}QF{mHYxCK7feHUc7Q_%A7(U7?daH@#fp#5KvekcSXQpgV+@Ti|YdRmjvt&
za9<Sgxgy|mLBIztD|to0`nrJAB>|@cwig8guLuNQ0He(weASF%u6AyW496I`+_agG
kaf`XBF&|T7b<>`Fliy80hLO=|g~$g65RIQKas&n{0O{3gTmS$7

diff --git a/server/map/get_markers.py b/server/map/get_markers.py
index b469a771..45f8965e 100644
--- a/server/map/get_markers.py
+++ b/server/map/get_markers.py
@@ -6,7 +6,7 @@ import json
 def get_all_markers(self, cursor, valid: bool):
     try:
         # NB: interval temporarily hard coded to 5 days
-        if valid: # Fetch only valid markers (taken within last 5 days)
+        if valid:
             cursor.execute('''
                 SELECT m.MeasurementID, m.SensorID, m.TimeMeasured, d.Latitude, d.Longitude,
                        d.IceTop, d.IceBottom, d.CalculatedThickness, d.Accuracy, s.SensorType, s.Active,
@@ -14,21 +14,21 @@ def get_all_markers(self, cursor, valid: bool):
                 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
+                LEFT JOIN Corner c ON m.MeasurementID = c.MeasurementID
                 INNER JOIN BodyOfWater b ON m.WaterBodyName = b.Name
                 WHERE m.TimeMeasured > DATE_SUB(NOW(), INTERVAL 5 DAY);
             ''')
-        else: # Fetch all markers
+        else:
             cursor.execute('''
-                        SELECT m.MeasurementID, m.SensorID, m.TimeMeasured, d.Latitude, d.Longitude,
-                               d.IceTop, d.IceBottom, d.CalculatedThickness, d.Accuracy, s.SensorType, s.Active,
-                               c.CornerID, c.CornerLatitude, c.CornerLongitude, b.Name
-                        FROM Measurement m
-                        INNER JOIN Sensor s ON m.SensorID = s.SensorID
-                        INNER JOIN Data d ON m.MeasurementID = d.MeasurementID
-                        INNER JOIN BodyOfWater b ON m.WaterBodyName = b.Name
-                        INNER JOIN Corner c ON m.MeasurementID = c.MeasurementID
-                    ''')
+                SELECT m.MeasurementID, m.SensorID, m.TimeMeasured, d.Latitude, d.Longitude,
+                       d.IceTop, d.IceBottom, d.CalculatedThickness, d.Accuracy, s.SensorType, s.Active,
+                       c.CornerID, c.CornerLatitude, c.CornerLongitude, b.Name
+                FROM Measurement m
+                INNER JOIN Sensor s ON m.SensorID = s.SensorID
+                INNER JOIN Data d ON m.MeasurementID = d.MeasurementID
+                LEFT JOIN Corner c ON m.MeasurementID = c.MeasurementID
+                INNER JOIN BodyOfWater b ON m.WaterBodyName = b.Name
+            ''')
 
         rows = cursor.fetchall()
 
@@ -54,10 +54,15 @@ def get_all_markers(self, cursor, valid: bool):
                 'Longitude': row[13]
             }
 
-            # If measurement ID already exists in measurement_data, append data and corner
+            # Check if measurement ID already exists in measurement_data
             if measurement_id in measurement_data:
-                measurement_data[measurement_id]['Data'].append(data_object)
-                measurement_data[measurement_id]['Corners'].append(corner_object)
+                # Check if the data object already exists in the list
+                if data_object not in measurement_data[measurement_id]['Data']:
+                    measurement_data[measurement_id]['Data'].append(data_object)
+
+                # Check if the corner object already exists in the list
+                if corner_object not in measurement_data[measurement_id]['Corners']:
+                    measurement_data[measurement_id]['Corners'].append(corner_object)
             else:
                 # Create a new entry for measurement_id if it does not already exist in the list
                 measurement_data[measurement_id] = {
-- 
GitLab