Remove winnings column from user and replace with a calculated value (#356)

* Remove winnings column from user and replace with a calculated value

* Handle case for no games played

* Idiomatic
master
outruncolors 2022-09-16 14:10:45 -05:00 committed by GitHub
parent 36376e24d9
commit 7dbbb27228
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 11 additions and 1 deletions

View File

@ -1,9 +1,11 @@
from sqlalchemy.orm import deferred, aliased
from sqlalchemy.sql import func
from secrets import token_hex
import pyotp
from files.helpers.discord import remove_user
from files.helpers.media import *
from files.helpers.const import *
from files.classes.casino_game import Casino_Game
from files.helpers.twentyone import get_active_twentyone_game_state
from files.helpers.sorting_and_time import *
from .alts import Alt
@ -58,7 +60,6 @@ class User(Base):
marseyawarded = Column(Integer)
rehab = Column(Integer)
longpost = Column(Integer)
winnings = Column(Integer, default=0)
unblockable = Column(Boolean)
bird = Column(Integer)
email = deferred(Column(String))
@ -925,3 +926,11 @@ class User(Base):
@lazy
def active_blackjack_game(self):
return json.dumps(get_active_twentyone_game_state(self))
@property
@lazy
def winnings(self):
from_casino = g.db.query(func.sum(Casino_Game.winnings)).filter(Casino_Game.user_id == self.id).one()[0]
from_casino_value = from_casino or 0
return from_casino_value + self.total_lottery_winnings

View File

@ -0,0 +1 @@
alter table users drop column winnings;