|
@@ -93,7 +93,7 @@ def register(username, password, game_key):
|
|
|
(username, password)
|
|
|
VALUES (? , ?)
|
|
|
''', (username, password))
|
|
|
- own(username, CURRENCY_NAME)
|
|
|
+ own(get_user_id_by_name(username), CURRENCY_NAME)
|
|
|
if game_key != '':
|
|
|
if valid_key(game_key):
|
|
|
activate_key(game_key, get_user_id_by_name(username))
|
|
@@ -102,15 +102,15 @@ def register(username, password, game_key):
|
|
|
|
|
|
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)
|
|
|
- SELECT userid, ownableid
|
|
|
+ WITH ownableid AS (SELECT rowid FROM ownables WHERE name = ?),
|
|
|
+ userid AS (SELECT ?)
|
|
|
+ INSERT INTO ownership (user_id, ownable_id)
|
|
|
+ SELECT *
|
|
|
+ FROM userid, ownableid
|
|
|
WHERE NOT EXISTS (
|
|
|
SELECT * FROM ownership
|
|
|
- WHERE ownership.user_id = userid
|
|
|
- AND ownership.ownable_id = (SELECT rowid FROM ownables WHERE name = ownableid)
|
|
|
+ WHERE ownership.user_id IN userid
|
|
|
+ AND ownership.ownable_id IN ownableid
|
|
|
)
|
|
|
''', (ownable_name, user_id,))
|
|
|
|
|
@@ -142,8 +142,20 @@ def send_ownable(from_user_id, to_user_id, ownable_name, amount):
|
|
|
return True
|
|
|
|
|
|
|
|
|
-def valid_key(key): # TODO possible performance increase when database gets larger by using sql directly
|
|
|
- return key in unused_keys()
|
|
|
+def valid_key(key):
|
|
|
+ connect()
|
|
|
+
|
|
|
+ cursor.execute('''
|
|
|
+ SELECT key
|
|
|
+ FROM keys
|
|
|
+ WHERE used_by_user_id IS NULL
|
|
|
+ AND key = ?
|
|
|
+ ''', (key,))
|
|
|
+
|
|
|
+ if cursor.fetchone():
|
|
|
+ return True
|
|
|
+ else:
|
|
|
+ return False
|
|
|
|
|
|
|
|
|
def new_session(user_id):
|
|
@@ -299,14 +311,14 @@ def get_user_orders(user_id):
|
|
|
SELECT
|
|
|
orders.buy,
|
|
|
ownables.name,
|
|
|
- orders.ordered_amount - order.executed_amount,
|
|
|
- orders.limit,
|
|
|
+ orders.ordered_amount - orders.executed_amount,
|
|
|
+ orders."limit",
|
|
|
orders.stop_loss,
|
|
|
orders.ordered_amount
|
|
|
FROM orders, ownables, ownership
|
|
|
WHERE ownership.user_id = ?
|
|
|
AND ownership.ownable_id = ownables.rowid
|
|
|
- AND orders.ownable_id = ownership.rowid
|
|
|
+ AND orders.ownership_id = ownership.rowid
|
|
|
ORDER BY orders.buy, ownables.name
|
|
|
''', (user_id,))
|
|
|
|
|
@@ -346,3 +358,16 @@ def user_owns_at_least(amount, user_id, ownable_id):
|
|
|
return True
|
|
|
else:
|
|
|
return False
|
|
|
+
|
|
|
+
|
|
|
+def news():
|
|
|
+ connect()
|
|
|
+
|
|
|
+ cursor.execute('''
|
|
|
+ SELECT *
|
|
|
+ FROM news
|
|
|
+ ORDER BY dt
|
|
|
+ LIMIT 20
|
|
|
+ ''')
|
|
|
+
|
|
|
+ return cursor.fetchall()
|