Browse Source

show depot value

Eren Yilmaz 6 years ago
parent
commit
0a308ded4d
3 changed files with 26 additions and 3 deletions
  1. 3 2
      client_controller.py
  2. 21 0
      model.py
  3. 2 1
      server_controller.py

+ 3 - 2
client_controller.py

@@ -94,9 +94,10 @@ def help():
 
 def depot():
     response = client_request('depot', {"session_id": connection.session_id})
-    success = 'data' in response
+    success = 'data' in response and 'own_wealth' in response
     if success:
         print(tabulate(response['data'], headers=['Object', 'Amount'], tablefmt="pipe"))
+        print('This corresponds to a wealth of roughly', response['own_wealth'])
     else:
         if 'error_message' in response:
             print('Depot access failed with message:', response['error_message'])
@@ -108,7 +109,7 @@ def leaderboard():
     response = client_request('leaderboard', {"session_id": connection.session_id})
     success = 'data' in response
     if success:
-        print(tabulate(response['data'], headers=['User', 'Score'], tablefmt="pipe"))
+        print(tabulate(response['data'], headers=['User', 'Wealth'], tablefmt="pipe"))
     else:
         if 'error_message' in response:
             print('Leaderboard access failed with message:', response['error_message'])

+ 21 - 0
model.py

@@ -821,3 +821,24 @@ def leaderboard():
         ''', (currency_id(),))
 
     return cursor.fetchall()
+
+
+def user_wealth(user_id):
+    connect()
+
+    cursor.execute('''
+        SELECT SUM(
+            CASE -- sum score for each of the users ownables
+            WHEN ownership.ownable_id = ? THEN ownership.amount
+            ELSE ownership.amount * (SELECT price 
+                                     FROM transactions
+                                     WHERE ownable_id = ownership.ownable_id 
+                                     ORDER BY dt DESC 
+                                     LIMIT 1)
+            END
+        ) score
+        FROM ownership
+        WHERE ownership.user_id = ?
+        ''', (currency_id(), user_id,))
+
+    return cursor.fetchone()[0]

+ 2 - 1
server_controller.py

@@ -36,7 +36,8 @@ def depot():
     if missing:
         return bad_request(missing)
     data = model.get_user_ownership(model.get_user_id_by_session_id(request.json['session_id']))
-    return {'data': data}
+    return {'data': data,
+            'own_wealth': model.user_wealth(model.get_user_id_by_session_id(request.json['session_id']))}
 
 
 def register():