Browse Source

work on placıng orders

Eren Yilmaz 6 years ago
parent
commit
e78b7df995
2 changed files with 46 additions and 4 deletions
  1. 45 4
      model.py
  2. 1 0
      server_controller.py

+ 45 - 4
model.py

@@ -100,13 +100,19 @@ def register(username, password, game_key):
     return True
 
 
-def own(username, ownable_name):
+def own(user_id, ownable_name):
     cursor.execute('''
+                WITH (SELECT rowid FROM ownables WHERE name = ?) AS ownableid,
+                     (SELECT ?) AS userid
                 INSERT INTO ownership
                 (user_id, ownable_id)
-                VALUES ((SELECT rowid FROM users WHERE username = ?), 
-                        (SELECT rowid FROM ownables WHERE name = ?))
-                ''', (username, ownable_name))
+                SELECT userid, ownableid
+                WHERE NOT EXISTS (
+                    SELECT * FROM ownership
+                    WHERE ownership.user_id = userid
+                    AND ownership.ownable_id = (SELECT rowid FROM ownables WHERE name = ownableid)
+                )
+                ''', (ownable_name, user_id,))
 
 
 def send_ownable(from_user_id, to_user_id, ownable_name, amount):
@@ -305,3 +311,38 @@ def get_user_orders(user_id):
         ''', (user_id,))
 
     return cursor.fetchall()
+
+
+def sell_ordered_amount(user_id, ownable_id):
+    connect()
+
+    # if ownable_id == kollar_id():
+    #     return 0
+
+    cursor.execute('''
+                SELECT SUM(orders.ordered_amount - orders.executed_amount)
+                FROM orders, ownership
+                WHERE ownership.rowid = orders.ownership_id
+                AND ownership.user_id = ?
+                AND ownership.ownable_id = ?
+                AND NOT orders.buy
+                ''', (user_id, ownable_id))
+
+    return cursor.fetchone()[0]
+
+
+def user_owns_at_least(amount, user_id, ownable_id):
+    connect()
+
+    cursor.execute('''
+                SELECT users.rowid
+                FROM ownership
+                AND ownership.user_id = ?
+                AND ownership.ownable_id = ?
+                AND ownership.amount - ? >= ?
+                ''', (user_id, ownable_id, sell_ordered_amount(user_id, ownable_id), amount))
+
+    if cursor.fetchone():
+        return True
+    else:
+        return False

+ 1 - 0
server_controller.py

@@ -81,6 +81,7 @@ def order():
     ownable_name = request.json['ownable']
     ownable_id = model.ownable_id_by_name(ownable_name)
     user_id = model.get_user_id_by_session_id(session_id)
+    model.own(user_id, ownable_id)
     ownership_id = model.ownership_id(ownable_id, user_id)
 
     limit = None