mirror of
https://github.com/wlinator/luminara.git
synced 2024-10-02 20:23:12 +00:00
Re-work the Currency data class
Commit is not ready for release yet.
This commit is contained in:
parent
49245784a3
commit
5ced9bfb42
1 changed files with 52 additions and 36 deletions
|
@ -2,46 +2,62 @@ from db import database
|
|||
|
||||
|
||||
class Currency:
|
||||
@staticmethod
|
||||
def get_cash_balance(user_id):
|
||||
query = "SELECT cash_balance FROM currency WHERE user_id={}".format(user_id)
|
||||
cash_balance = database.select_query(query)
|
||||
def __init__(self, user_id):
|
||||
self.user_id = user_id
|
||||
(self.cash, self.special) = Currency.fetch_or_create_balance(self.user_id)
|
||||
|
||||
if not cash_balance:
|
||||
Currency.create_new_balance(user_id)
|
||||
return 50
|
||||
def add_cash(self, amount):
|
||||
self.cash += abs(amount)
|
||||
|
||||
return cash_balance[0][0]
|
||||
def add_special(self, amount):
|
||||
self.special += abs(amount)
|
||||
|
||||
def take_cash(self, amount):
|
||||
self.cash -= abs(amount)
|
||||
|
||||
if self.cash < 0:
|
||||
self.cash = 0
|
||||
|
||||
def take_special(self, amount):
|
||||
self.special -= abs(amount)
|
||||
|
||||
if self.special < 0:
|
||||
self.special = 0
|
||||
|
||||
def get_cash(self):
|
||||
return self.cash
|
||||
|
||||
def get_special(self):
|
||||
return self.special
|
||||
|
||||
def push(self):
|
||||
query = """
|
||||
UPDATE currency
|
||||
SET cash_balance = ?, special_balance = ?
|
||||
WHERE user_id = ?
|
||||
"""
|
||||
|
||||
database.execute_query(query, (round(self.cash, 2), round(self.special, 2), self.user_id))
|
||||
|
||||
@staticmethod
|
||||
def get_special_balance(user_id):
|
||||
query = "SELECT special_balance FROM currency WHERE user_id={}".format(user_id)
|
||||
special_balance = database.select_query(query)
|
||||
def fetch_or_create_balance(user_id):
|
||||
query = """
|
||||
SELECT cash_balance, special_balance
|
||||
FROM currency
|
||||
WHERE user_id = ?
|
||||
"""
|
||||
|
||||
if not special_balance:
|
||||
Currency.create_new_balance(user_id)
|
||||
return 3
|
||||
(cash_balance, special_balance) = database.select_query(query, (user_id,))[0]
|
||||
|
||||
return special_balance[0][0]
|
||||
# if the user doesn't have a balance yet -> create one
|
||||
# additionally if for some reason a balance becomes Null
|
||||
# re-generate the user's balance as fallback.
|
||||
if not cash_balance or not special_balance:
|
||||
query = """
|
||||
INSERT INTO currency (user_id, cash_balance, special_balance)
|
||||
VALUES (?, 50, 3)
|
||||
"""
|
||||
database.execute_query(query, (user_id,))
|
||||
return 50, 3
|
||||
|
||||
@staticmethod
|
||||
def update_cash_balance(user_id, amount):
|
||||
if amount < 0:
|
||||
amount = 0
|
||||
|
||||
query = "UPDATE currency SET cash_balance = {} WHERE user_id = {}".format(round(amount, 2), user_id)
|
||||
database.execute_query(query)
|
||||
|
||||
@staticmethod
|
||||
def update_special_balance(user_id, amount):
|
||||
if amount < 0:
|
||||
amount = 0
|
||||
|
||||
query = "UPDATE currency SET special_balance = {} WHERE user_id = {}".format(amount, user_id)
|
||||
database.execute_query(query)
|
||||
|
||||
@staticmethod
|
||||
def create_new_balance(user_id):
|
||||
query = "INSERT INTO currency(user_id, cash_balance, special_balance) VALUES ({}, 50, 3)".format(user_id)
|
||||
database.execute_query(query)
|
||||
print(f"BALANCE UPDATE --- USER with ID {user_id} created new balance")
|
||||
return cash_balance, special_balance
|
||||
|
|
Loading…
Reference in a new issue