1
Fork 0
mirror of https://github.com/wlinator/luminara.git synced 2024-10-02 22:23:13 +00:00

Re-work the Currency data class

Commit is not ready for release yet.
This commit is contained in:
wlinator 2023-06-19 12:25:27 -04:00
parent 49245784a3
commit 5ced9bfb42

View file

@ -2,46 +2,62 @@ from db import database
class Currency: class Currency:
@staticmethod def __init__(self, user_id):
def get_cash_balance(user_id): self.user_id = user_id
query = "SELECT cash_balance FROM currency WHERE user_id={}".format(user_id) (self.cash, self.special) = Currency.fetch_or_create_balance(self.user_id)
cash_balance = database.select_query(query)
if not cash_balance: def add_cash(self, amount):
Currency.create_new_balance(user_id) self.cash += abs(amount)
return 50
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 @staticmethod
def get_special_balance(user_id): def fetch_or_create_balance(user_id):
query = "SELECT special_balance FROM currency WHERE user_id={}".format(user_id) query = """
special_balance = database.select_query(query) SELECT cash_balance, special_balance
FROM currency
WHERE user_id = ?
"""
if not special_balance: (cash_balance, special_balance) = database.select_query(query, (user_id,))[0]
Currency.create_new_balance(user_id)
return 3
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 return cash_balance, special_balance
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")