Create all db models

Stijn De Clercq 2021-06-21 23:46:44 +02:00
parent 84bb04b711
commit 2999bff5a8
1 changed files with 199 additions and 4 deletions

View File

@ -1,16 +1,211 @@
from database import Base from database import Base
from sqlalchemy import Column, String, Integer from sqlalchemy import Column, String, Integer, BigInteger, Numeric, Date, Boolean
from typing import List from typing import Set
# TODO fill in non-nulls everywhere
class BankAccount(Base):
__tablename__ = "currencytable"
userid = Column(BigInteger, primary_key=True)
dinks = Column(Numeric, default=0.0)
banklevel = Column(Integer, default=1)
investedamount = Column(Numeric, default=0.0)
investeddays = Column(Integer, default=0)
profit = Column(Numeric, default=0.0)
defense = Column(Integer, default=1)
offense = Column(Integer, default=1)
bitcoins = Column(Numeric, default=0.0)
nightly = Column(Integer, default=0)
nightly_streak = Column(Integer, default=0)
class Birthday(Base):
__tablename__ = "birthdays"
userid = Column(BigInteger, primary_key=True)
day = Column(Integer, nullable=False)
month = Column(Integer, nullable=False)
year = Column(Integer, nullable=False)
class ChannelActivity(Base):
__tablename__ = "channel_activity"
channel_id = Column(BigInteger, primary_key=True)
message_count = Column(Numeric)
class CommandAlias(Base):
__tablename__ = "custom_command_aliases"
id = Column(Integer, autoincrement=True, primary_key=True)
command = Column(Integer)
alias = Column(String, unique=True)
class CommandStats(Base):
__tablename__ = "command_stats"
day = Column(Date, primary_key=True)
amount = Column(Integer)
class CustomCommand(Base):
__tablename__ = "custom_commands"
id = Column(Integer, autoincrement=True, primary_key=True)
name = Column(String, unique=True)
response = Column(String)
class DadJoke(Base):
__tablename__ = "dad_jokes"
id = Column(Integer, autoincrement=True, primary_key=True)
joke = Column(String)
class FAQCategory(Base):
__tablename__ = "faq_categories"
id = Column(Integer, autoincrement=True, primary_key=True)
name = Column(String)
class FAQEntry(Base):
__tablename__ = "faq_entries"
id = Column(Integer, autoincrement=True, primary_key=True)
category_id = Column(Integer)
question = Column(String)
answer = Column(String)
answer_markdown = Column(String)
class GitHub(Base):
__tablename__ = "githubs"
userid = Column(BigInteger, primary_key=True)
githublink = Column(String)
class Inventory(Base):
__tablename__ = "inventory"
userid = Column(BigInteger, primary_key=True)
itemid = Column(Integer, primary_key=True)
amount = Column(Integer, default=0)
class Meme(Base):
__tablename__ = "memes"
# TODO id primary key
id = Column(BigInteger, primary_key=True)
name = Column(String)
fields = Column(Integer)
class Muttn(Base):
__tablename__ = "muttn"
userid = Column(BigInteger, primary_key=True)
stats = Column(Numeric)
count = Column(Integer)
message = Column(BigInteger)
highest = Column(Integer, default=0)
class PokeInfo(Base):
__tablename__ = "poke"
current = Column(BigInteger, primary_key=True)
poketime = Column(BigInteger)
previous = Column(BigInteger)
class Prison(Base):
__tablename__ = "prison"
userid = Column(BigInteger, primary_key=True)
bail = Column(Numeric)
days = Column(Integer)
daily = Column(Numeric)
class Reminders(Base):
__tablename__ = "remind"
userid = Column(BigInteger, primary_key=True)
nightly = Column(Boolean, default=False)
les = Column(Boolean, default=False)
class StoreItem(Base):
__tablename__ = "store"
itemid = Column(Integer, autoincrement=True, primary_key=True)
name = Column(String)
price = Column(BigInteger)
limit = Column(Integer)
class TrumpQuote(Base):
__tablename__ = "trump"
id = Column(Integer, autoincrement=True, primary_key=True)
quote = Column(String)
date = Column(String)
location = Column(String)
class TwitchChannel(Base):
__tablename__ = "twitch"
userid = Column(BigInteger, primary_key=True)
link = Column(String)
class UserInfo(Base):
__tablename__ = "info"
userid = Column(BigInteger, primary_key=True)
poke_blacklist = Column(Boolean, default=False)
class UserStats(Base):
__tablename__ = "personalstats"
userid = Column(BigInteger, primary_key=True)
poked = Column(Integer, default=0)
robs_success = Column(Integer, default=0)
robs_failed = Column(Integer, default=0)
robs_total = Column(Numeric, default=0)
longest_streak = Column(Integer, default=0)
nightlies_count = Column(Integer, default=0)
profit = Column(Numeric, default=0.0)
cf_wins = Column(Integer, default=0)
cf_profit = Column(Numeric, default=0.0)
bails = Column(Integer, default=0)
messages = Column(Integer, default=0)
xp = Column(Integer, default=0)
last_message = Column(BigInteger, default=0)
class TestTable(Base): class TestTable(Base):
__tablename__ = "test_table" __tablename__ = "test_table"
id = Column(Integer, autoincrement=True, primary_key=True) id = Column(Integer, autoincrement=True, primary_key=True)
name = Column(String, nullable=False) name = Column(String, nullable=False)
other_column = Column(Integer)
# A list of all models in this file, this is used to # A list of all models in this file, this is used to
# create all tables later on # create all tables later on
all_models: List[Base] = [TestTable] all_models: Set[Base] = {
BankAccount, Birthday, ChannelActivity, CommandAlias, CommandStats,
CustomCommand, DadJoke, FAQCategory, FAQEntry, GitHub, Inventory,
Meme, Muttn, PokeInfo, Prison, Reminders, StoreItem, TrumpQuote,
TwitchChannel, UserInfo, UserStats, TestTable
}