Browse Source

Autofill the banks ownables when seeding

Eren Yilmaz 6 years ago
parent
commit
be8936d66d
2 changed files with 17 additions and 15 deletions
  1. 3 9
      db_setup.py
  2. 14 6
      model.py

+ 3 - 9
db_setup.py

@@ -69,30 +69,24 @@ def seed(cursor):
                     (username,password)
                     VALUES ('bank','')
                     ''')
-    cursor.execute('''
-                    INSERT OR IGNORE INTO ownership
-                    (user_id, ownable_id)
-                    VALUES ((SELECT rowid FROM users WHERE username = 'bank'), 
-                            (SELECT rowid FROM ownables WHERE name = ?))
-                    ''', (CURRENCY_NAME,))
 
     # bank owns all the money that is not owned by players, 1000 * num_used_key - player_money
     cursor.execute('''
-                    INSERT INTO users
+                    INSERT INTO ownership
                     (user_id, ownable_id, amount)
                     VALUES ((SELECT rowid FROM users WHERE username = 'bank'), 
                             (SELECT rowid FROM ownables WHERE name = ?),
                             1000 * (SELECT COUNT(used_by_user_id) FROM keys) - (SELECT SUM(amount) 
                              FROM ownership 
                              WHERE ownable_id = (SELECT rowid FROM ownables WHERE name = ?)))
-                    ''', (CURRENCY_NAME,))
+                    ''', (CURRENCY_NAME, CURRENCY_NAME,))
 
     # bank owns some stuff (₭ollar is be dealt with separately)
     cursor.execute('''
     INSERT OR IGNORE INTO ownership
     (user_id, ownable_id, amount)
     SELECT (SELECT rowid FROM users WHERE username = 'bank'), 
-            ownable.rowid, 
+            ownables.rowid, 
             (SELECT SUM(amount) FROM ownership WHERE ownable_id = ownables.rowid)
     FROM ownables WHERE
     name <> ?

+ 14 - 6
model.py

@@ -127,14 +127,14 @@ def register(username, password, game_key):
     return True
 
 
-def own(user_id, ownable_name):
+def own(user_id, ownable_name, amount=0):
     if not isinstance(ownable_name, str):
         return AssertionError('A name must be a string.')
 
     cursor.execute('''
-                INSERT OR IGNORE INTO ownership (user_id, ownable_id)
-                SELECT ?, (SELECT rowid FROM ownables WHERE name = ?)
-                ''', (user_id, ownable_name,))
+                INSERT OR IGNORE INTO ownership (user_id, ownable_id, amount)
+                SELECT ?, (SELECT rowid FROM ownables WHERE name = ?), ?
+                ''', (user_id, ownable_name, amount))
 
 
 def send_ownable(from_user_id, to_user_id, ownable_name, amount):
@@ -504,7 +504,7 @@ def new_stock(expiry, name=None):
     amount = random.randrange(100, 10000)
     price = random.randrange(10000, 20000) / amount
     ownable_id = ownable_id_by_name(name)
-    own(bank_id(), name)
+    own(bank_id(), name, amount)
     bank_order(False,
                ownable_id,
                price,
@@ -690,7 +690,7 @@ def execute_orders(ownable_id):
 
         def _my_division(x, y):
             try:
-                return floor(x/y)
+                return floor(x / y)
             except ZeroDivisionError:
                 return float('Inf')
 
@@ -1087,3 +1087,11 @@ def ownables():
         data[idx] = (row[0], row[1], market_cap)
 
     return data
+
+
+def reset_bank():
+    connect()
+    cursor.execute('''
+        DELETE FROM ownership 
+        WHERE user_id = ?
+        ''', (bank_id(),))