|
@@ -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
|