mirror of https://github.com/stijndcl/didier
108 lines
2.9 KiB
Python
108 lines
2.9 KiB
Python
|
import datetime
|
||
|
from functions.database import utils, stats
|
||
|
import time
|
||
|
|
||
|
|
||
|
def dinks(userid):
|
||
|
return getOrAddUser(userid)[1]
|
||
|
|
||
|
|
||
|
def dinksAll(userid):
|
||
|
platinumDinks = 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()
|
||
|
|
||
|
if result:
|
||
|
platinumDinks = result[0][0]
|
||
|
|
||
|
return {"dinks": dinks(userid), "platinum": platinumDinks}
|
||
|
|
||
|
|
||
|
def getAllRows():
|
||
|
connection = utils.connect()
|
||
|
cursor = connection.cursor()
|
||
|
cursor.execute(
|
||
|
"""SELECT * FROM currencytable"""
|
||
|
)
|
||
|
|
||
|
return cursor.fetchall()
|
||
|
|
||
|
|
||
|
def getAllPlatDinks():
|
||
|
connection = utils.connect()
|
||
|
cursor = connection.cursor()
|
||
|
cursor.execute("SELECT userid, amount FROM inventory WHERE itemid = 1")
|
||
|
result = cursor.fetchall()
|
||
|
dic = {}
|
||
|
for user in result:
|
||
|
dic[str(user[0])] = user[1]
|
||
|
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]
|
||
|
|
||
|
|
||
|
# TODO check for nightly bonus & add+return that instead of 420
|
||
|
def nightly(userid):
|
||
|
user = getOrAddUser(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()))
|
||
|
|
||
|
# Update the streak
|
||
|
if (today - lastNightly).days > 1:
|
||
|
update(userid, "nightly_streak", 1)
|
||
|
streak = 1
|
||
|
else:
|
||
|
update(userid, "nightly_streak", streak + 1)
|
||
|
streak += 1
|
||
|
|
||
|
s = stats.getOrAddUser(userid)
|
||
|
|
||
|
if streak > int(s[5]):
|
||
|
stats.update(userid, "longest_streak", streak)
|
||
|
|
||
|
stats.update(userid, "nightlies_count", int(s[6]) + 1)
|
||
|
|
||
|
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()
|
||
|
|
||
|
|
||
|
def update(userid, column, value):
|
||
|
_ = getOrAddUser(userid)
|
||
|
connection = utils.connect()
|
||
|
cursor = connection.cursor()
|
||
|
query = "UPDATE currencytable " \
|
||
|
"SET {} = %s " \
|
||
|
"WHERE userid = %s".format(column)
|
||
|
cursor.execute(query, (value, userid,))
|
||
|
connection.commit()
|