mirror of
https://github.com/stijndcl/didier.git
synced 2026-06-29 17:39:57 +02:00
Stash currency beginning
This commit is contained in:
parent
cb72774a7a
commit
ea2a25d1fc
6 changed files with 67 additions and 79 deletions
|
|
@ -1,103 +1,90 @@
|
|||
import datetime
|
||||
from typing import List, Dict
|
||||
|
||||
from database.db import session
|
||||
from database.models import BankAccount, Inventory
|
||||
from functions.database import utils, stats
|
||||
import time
|
||||
|
||||
|
||||
def dinks(userid):
|
||||
return getOrAddUser(userid)[1]
|
||||
def dinks(userid) -> float:
|
||||
return float(get_or_add_user(userid).dinks)
|
||||
|
||||
|
||||
def dinksAll(userid):
|
||||
platinumDinks = 0
|
||||
def dinks_all(userid) -> Dict:
|
||||
platinum_dinks = 0
|
||||
|
||||
connection = utils.connect()
|
||||
cursor = connection.cursor()
|
||||
cursor.execute("SELECT amount FROM inventory WHERE userid = %s AND itemid = %s", (int(userid), 1,))
|
||||
result = cursor.fetchall()
|
||||
inventory = session.query(Inventory).filter(Inventory.userid == userid and Inventory.itemid == 1).scalar()
|
||||
|
||||
if result:
|
||||
platinumDinks = result[0][0]
|
||||
# Don't add to db if not present, doesn't matter
|
||||
if inventory is not None:
|
||||
platinum_dinks = inventory.amount
|
||||
|
||||
return {"dinks": dinks(userid), "platinum": platinumDinks}
|
||||
return {"dinks": dinks(userid), "platinum": platinum_dinks}
|
||||
|
||||
|
||||
def getAllRows():
|
||||
connection = utils.connect()
|
||||
cursor = connection.cursor()
|
||||
cursor.execute(
|
||||
"""SELECT * FROM currencytable"""
|
||||
)
|
||||
|
||||
return cursor.fetchall()
|
||||
def get_all_rows() -> List[BankAccount]:
|
||||
return session.query(BankAccount).all()
|
||||
|
||||
|
||||
def getAllPlatDinks():
|
||||
connection = utils.connect()
|
||||
cursor = connection.cursor()
|
||||
cursor.execute("SELECT userid, amount FROM inventory WHERE itemid = 1")
|
||||
result = cursor.fetchall()
|
||||
def get_all_plat_dinks() -> Dict[str, int]:
|
||||
users: List[Inventory] = session.query(Inventory).filter(Inventory.itemid == 1).all()
|
||||
|
||||
dic = {}
|
||||
for user in result:
|
||||
dic[str(user[0])] = user[1]
|
||||
for user in users:
|
||||
dic[str(user.userid)] = user.amount
|
||||
|
||||
return dic
|
||||
|
||||
|
||||
def getOrAddUser(userid):
|
||||
connection = utils.connect()
|
||||
cursor = connection.cursor()
|
||||
query = "SELECT * FROM currencytable WHERE userid = %s"
|
||||
cursor.execute(
|
||||
query, (int(userid),)
|
||||
)
|
||||
result = cursor.fetchall()
|
||||
# User didn't exist yet, so create a new default file
|
||||
if len(result) == 0:
|
||||
createNewUser(userid, connection)
|
||||
return getOrAddUser(userid)
|
||||
return result[0]
|
||||
def get_or_add_user(userid: int) -> BankAccount:
|
||||
user = session.query(BankAccount).filter(BankAccount.userid == userid).scalar()
|
||||
|
||||
# User doesn't exist yet, add them
|
||||
if user is None:
|
||||
session.add(BankAccount(userid=userid))
|
||||
session.commit()
|
||||
|
||||
return user
|
||||
|
||||
|
||||
# TODO check for nightly bonus & add+return that instead of 420
|
||||
def nightly(userid):
|
||||
user = getOrAddUser(userid)
|
||||
user = get_or_add_user(userid)
|
||||
|
||||
today = datetime.datetime.today().date()
|
||||
lastNightly = datetime.datetime.fromtimestamp(user[9]).date()
|
||||
streak = int(user[10])
|
||||
if lastNightly < today:
|
||||
update(userid, "dinks", float(user[1]) + 420.0)
|
||||
update(userid, "nightly", int(time.time()))
|
||||
last_nightly = datetime.datetime.fromtimestamp(user.nightly).date()
|
||||
streak = user.nightly_streak
|
||||
|
||||
if last_nightly < today:
|
||||
user.dinks = float(user.dinks) + 420.0
|
||||
user.nightly = int(time.time())
|
||||
|
||||
# Update the streak
|
||||
if (today - lastNightly).days > 1:
|
||||
update(userid, "nightly_streak", 1)
|
||||
if (today - last_nightly).days > 1:
|
||||
user.nightly_streak = 1
|
||||
streak = 1
|
||||
else:
|
||||
update(userid, "nightly_streak", streak + 1)
|
||||
user.nightly_streak += 1
|
||||
streak += 1
|
||||
|
||||
s = stats.getOrAddUser(userid)
|
||||
|
||||
# TODO when stats is done
|
||||
if streak > int(s[5]):
|
||||
stats.update(userid, "longest_streak", streak)
|
||||
|
||||
stats.update(userid, "nightlies_count", int(s[6]) + 1)
|
||||
|
||||
session.commit()
|
||||
|
||||
return [True, 420, streak]
|
||||
return [False, 0, -1]
|
||||
|
||||
|
||||
def createNewUser(userid, connection=None):
|
||||
if connection is None:
|
||||
connection = utils.connect()
|
||||
cursor = connection.cursor()
|
||||
query = "INSERT INTO currencytable(userid, dinks, banklevel, investedamount, investeddays, profit, defense, offense, bitcoins, nightly) " \
|
||||
"VALUES (%s, 0.0, 1, 0.0, 0, 0, 1, 1, 0.0, 0)"
|
||||
cursor.execute(query, (int(userid),))
|
||||
connection.commit()
|
||||
|
||||
|
||||
# TODO fix usages first
|
||||
def update(userid, column, value):
|
||||
_ = getOrAddUser(userid)
|
||||
_ = get_or_add_user(userid)
|
||||
connection = utils.connect()
|
||||
cursor = connection.cursor()
|
||||
query = "UPDATE currencytable " \
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ import random
|
|||
import time
|
||||
|
||||
|
||||
# TODO Fix currency/nightly when this is done
|
||||
def getOrAddUser(userid):
|
||||
connection = utils.connect()
|
||||
cursor = connection.cursor()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue