]> rtime.felk.cvut.cz Git - hubacji1/coffee-getter.git/commitdiff
Improve database queries
authorJiri Vlasak <jiri.vlasak.2@cvut.cz>
Fri, 4 Nov 2022 16:01:28 +0000 (17:01 +0100)
committerJiri Vlasak <jiri.vlasak.2@cvut.cz>
Fri, 4 Nov 2022 16:01:28 +0000 (17:01 +0100)
coffee_getter/db.py
ut/test_db.py

index f1803ef228c5949451b7f24db28348559d977255..9239d7d9d3b2de77ca853b171b1b326881c716d2 100644 (file)
@@ -24,18 +24,19 @@ def Q(q, b="", t=["now", "-7 days"]):
 
         SELECT count(*), flavor
         FROM coffees
-        WHERE time BETWEEN
+        WHERE (coffees.time BETWEEN
             {dtf}
-            AND {dtt}
+            AND {dtt})
         GROUP BY flavor
 
         """
     elif q == "get_drinkers_of":
         if isinstance(b, tuple) or isinstance(b, list):
             assert len(b) > 0
-            f = f"WHERE flavor = '{b[0]}'"
+            f = f"WHERE (flavor = '{b[0]}'"
             for i in b[1:]:
                 f += f" OR flavor = '{i}'"
+            f += ")"
         else:
             assert b != ""
             f = f"WHERE flavor = '{b}'"
@@ -45,9 +46,9 @@ def Q(q, b="", t=["now", "-7 days"]):
         LEFT JOIN identifiers on coffees.id = identifiers.userid
         LEFT JOIN users on identifiers.userid = users.id
         {f}
-        AND coffees.time BETWEEN
+        AND (coffees.time BETWEEN
             {dtf}
-            AND {dtt}
+            AND {dtt})
         GROUP BY identifiers.userid
 
         """
index 4320f56ba70a2918a656dc0001ec7b1f50f3de3a..ba2a84fbb0a1e1aefc9105959b4bb204108730ba 100644 (file)
@@ -12,9 +12,9 @@ class Queries(TestCase):
 
         SELECT count(*), flavor
         FROM coffees
-        WHERE time BETWEEN
+        WHERE (coffees.time BETWEEN
             datetime('now', 'localtime', '-7 days')
-            AND datetime('now', 'localtime')
+            AND datetime('now', 'localtime'))
         GROUP BY flavor
 
         """
@@ -26,9 +26,9 @@ class Queries(TestCase):
         LEFT JOIN identifiers on coffees.id = identifiers.userid
         LEFT JOIN users on identifiers.userid = users.id
         WHERE flavor = 'FOO'
-        AND coffees.time BETWEEN
+        AND (coffees.time BETWEEN
             datetime('now', 'localtime', '-7 days')
-            AND datetime('now', 'localtime')
+            AND datetime('now', 'localtime'))
         GROUP BY identifiers.userid
 
         """
@@ -38,9 +38,9 @@ class Queries(TestCase):
         LEFT JOIN identifiers on coffees.id = identifiers.userid
         LEFT JOIN users on identifiers.userid = users.id
         WHERE flavor = 'BAR'
-        AND coffees.time BETWEEN
+        AND (coffees.time BETWEEN
             datetime('FROM', 'localtime')
-            AND datetime('TO', 'localtime')
+            AND datetime('TO', 'localtime'))
         GROUP BY identifiers.userid
 
         """
@@ -49,10 +49,10 @@ class Queries(TestCase):
         SELECT count(*), users.name FROM coffees
         LEFT JOIN identifiers on coffees.id = identifiers.userid
         LEFT JOIN users on identifiers.userid = users.id
-        WHERE flavor = 'FOO' OR flavor = 'BAR' OR flavor = 'B'
-        AND coffees.time BETWEEN
+        WHERE (flavor = 'FOO' OR flavor = 'BAR' OR flavor = 'B')
+        AND (coffees.time BETWEEN
             datetime('FROM', 'localtime')
-            AND datetime('TO', 'localtime')
+            AND datetime('TO', 'localtime'))
         GROUP BY identifiers.userid
 
         """