Kaynağa Gözat

mark own orders in orders_on

Eren Yilmaz 6 yıl önce
ebeveyn
işleme
b1f3cda156
4 değiştirilmiş dosya ile 13 ekleme ve 70 silme
  1. 2 2
      client_controller.py
  2. 2 65
      cool_query.py
  3. 6 2
      model.py
  4. 3 1
      server_controller.py

+ 2 - 2
client_controller.py

@@ -313,7 +313,7 @@ def orders():
     success = 'data' in response
     if success:
         print(_my_tabulate(response['data'],
-                           headers=['Buy?', 'Name', 'Amount', 'Limit', 'stop-loss', 'Expires', 'No.'],
+                           headers=['Buy?', 'Name', 'Size', 'Limit', 'stop-loss', 'Expires', 'No.'],
                            tablefmt="pipe"))
     else:
         if 'error_message' in response:
@@ -330,7 +330,7 @@ def orders_on(obj_name=None):
     success = 'data' in response
     if success:
         print(_my_tabulate(response['data'],
-                           headers=['Buy?', 'Name', 'Amount', 'Limit', 'stop-loss', 'Expires', 'No.'],
+                           headers=['My', 'Buy?', 'Name', 'Size', 'Limit', 'stop-loss', 'Expires', 'No.'],
                            tablefmt="pipe"))
     else:
         if 'error_message' in response:

+ 2 - 65
cool_query.py

@@ -4,71 +4,8 @@ from client_controller import _my_tabulate
 model.connect()
 model.cursor.execute('''
         EXPLAIN QUERY PLAN
-            SELECT * FROM (
-                SELECT buy_order.*, sell_order.*, buyer.user_id, seller.user_id, buy_order.rowid, sell_order.rowid
-                FROM orders buy_order, orders sell_order, ownership buyer, ownership seller
-                WHERE buy_order.buy AND NOT sell_order.buy
-                AND buyer.rowid = buy_order.ownership_id
-                AND seller.rowid = sell_order.ownership_id
-                AND buyer.ownable_id = ?
-                AND seller.ownable_id = ?
-                AND buy_order."limit" IS NULL
-                AND sell_order."limit" IS NULL
-                ORDER BY buy_order.rowid ASC,
-                         sell_order.rowid ASC
-                LIMIT 1)
-            UNION ALL -- best buy orders
-            SELECT * FROM (
-                SELECT buy_order.*, sell_order.*, buyer.user_id, seller.user_id, buy_order.rowid, sell_order.rowid
-                FROM orders buy_order, orders sell_order, ownership buyer, ownership seller
-                WHERE buy_order.buy AND NOT sell_order.buy
-                AND buyer.rowid = buy_order.ownership_id
-                AND seller.rowid = sell_order.ownership_id
-                AND buyer.ownable_id = ?
-                AND seller.ownable_id = ?
-                AND buy_order."limit" IS NULL
-                AND sell_order."limit" IS NOT NULL
-                AND NOT sell_order.stop_loss
-                ORDER BY sell_order."limit" ASC,
-                         buy_order.rowid ASC,
-                         sell_order.rowid ASC
-                LIMIT 1)
-            UNION ALL -- best sell orders
-            SELECT * FROM (
-                SELECT buy_order.*, sell_order.*, buyer.user_id, seller.user_id, buy_order.rowid, sell_order.rowid
-                FROM orders buy_order, orders sell_order, ownership buyer, ownership seller
-                WHERE buy_order.buy AND NOT sell_order.buy
-                AND buyer.rowid = buy_order.ownership_id
-                AND seller.rowid = sell_order.ownership_id
-                AND buyer.ownable_id = ?
-                AND seller.ownable_id = ?
-                AND buy_order."limit" IS NOT NULL
-                AND NOT buy_order.stop_loss
-                AND sell_order."limit" IS NULL
-                ORDER BY buy_order."limit" DESC,
-                         buy_order.rowid ASC,
-                         sell_order.rowid ASC
-                LIMIT 1)
-            UNION ALL -- both limit orders
-            SELECT * FROM (
-                SELECT buy_order.*, sell_order.*, buyer.user_id, seller.user_id, buy_order.rowid, sell_order.rowid
-                FROM orders buy_order, orders sell_order, ownership buyer, ownership seller
-                WHERE buy_order.buy AND NOT sell_order.buy
-                AND buyer.rowid = buy_order.ownership_id
-                AND seller.rowid = sell_order.ownership_id
-                AND buyer.ownable_id = ?
-                AND seller.ownable_id = ?
-                AND buy_order."limit" IS NOT NULL
-                AND sell_order."limit" IS NOT NULL
-                AND sell_order."limit" <= buy_order."limit"
-                AND NOT sell_order.stop_loss
-                AND NOT buy_order.stop_loss
-                ORDER BY buy_order."limit" DESC,
-                         sell_order."limit" ASC,
-                         buy_order.rowid ASC,
-                         sell_order.rowid ASC
-                LIMIT 1)
-            LIMIT 1
+        DELETE FROM orders 
+        WHERE expiry_dt < DATETIME('now')
         '''.replace('?','1'))
 
 # model.cursor.execute('''

+ 6 - 2
model.py

@@ -372,11 +372,15 @@ def get_user_orders(user_id):
     return cursor.fetchall()
 
 
-def get_ownable_orders(ownable_id):
+def get_ownable_orders(user_id, ownable_id):
     connect()
 
     cursor.execute('''
         SELECT 
+            CASE 
+                WHEN ownership.user_id = ? THEN ' X '
+                ELSE NULL
+            END,
             CASE 
                 WHEN orders.buy THEN 'Buy'
                 ELSE 'Sell'
@@ -396,7 +400,7 @@ def get_ownable_orders(ownable_id):
         AND ownership.ownable_id = ownables.rowid
         AND orders.ownership_id = ownership.rowid
         ORDER BY ownables.name ASC, orders.stop_loss ASC, orders.buy DESC, orders."limit" ASC
-        ''', (ownable_id,))
+        ''', (user_id, ownable_id,))
 
     return cursor.fetchall()
 

+ 3 - 1
server_controller.py

@@ -171,7 +171,9 @@ def orders_on():
         return bad_request(missing)
     if not model.ownable_name_exists(request.json['ownable']):
         return bad_request('This kind of object can not be ordered.')
-    data = model.get_ownable_orders(model.ownable_id_by_name(request.json['ownable']))
+    user_id = model.get_user_id_by_session_id(request.json['session_id'])
+    ownable_id = model.ownable_id_by_name(request.json['ownable'])
+    data = model.get_ownable_orders(user_id, ownable_id)
     return {'data': data}