mirror of
https://github.com/Steffo99/greed.git
synced 2024-11-22 05:54:18 +00:00
Add Session and create_all to database.py
This commit is contained in:
parent
17371f00d3
commit
4ffd1ce8b7
1 changed files with 11 additions and 3 deletions
14
database.py
14
database.py
|
@ -1,5 +1,6 @@
|
||||||
from sqlalchemy import create_engine, Column, ForeignKey, UniqueConstraint, CheckConstraint
|
from sqlalchemy import create_engine, Column, ForeignKey, UniqueConstraint, CheckConstraint
|
||||||
from sqlalchemy import Integer, BigInteger, String, Numeric, Text
|
from sqlalchemy import Integer, BigInteger, String, Numeric, Text
|
||||||
|
from sqlalchemy.orm import sessionmaker
|
||||||
from sqlalchemy.ext.declarative import declarative_base
|
from sqlalchemy.ext.declarative import declarative_base
|
||||||
import configloader
|
import configloader
|
||||||
import telegram
|
import telegram
|
||||||
|
@ -13,6 +14,9 @@ engine = create_engine(configloader.config["Database"]["engine"])
|
||||||
# Create a base class to define all the database subclasses
|
# Create a base class to define all the database subclasses
|
||||||
TableDeclarativeBase = declarative_base(bind=engine)
|
TableDeclarativeBase = declarative_base(bind=engine)
|
||||||
|
|
||||||
|
# Create a Session class able to initialize database sessions
|
||||||
|
Session = sessionmaker()
|
||||||
|
|
||||||
# Define all the database tables using the sqlalchemy declarative base
|
# Define all the database tables using the sqlalchemy declarative base
|
||||||
class User(TableDeclarativeBase):
|
class User(TableDeclarativeBase):
|
||||||
"""A Telegram user who used the bot at least once."""
|
"""A Telegram user who used the bot at least once."""
|
||||||
|
@ -92,7 +96,7 @@ class Transaction(TableDeclarativeBase):
|
||||||
# The internal transaction ID
|
# The internal transaction ID
|
||||||
transaction_id = Column(BigInteger, primary_key=True)
|
transaction_id = Column(BigInteger, primary_key=True)
|
||||||
# The user whose credit is affected by this transaction
|
# The user whose credit is affected by this transaction
|
||||||
user_id = Column(BigInteger, ForeignKey("users.id"), nullable=False)
|
user_id = Column(BigInteger, ForeignKey("users.user_id"), nullable=False)
|
||||||
# The value of this transaction. Can be both negative and positive.
|
# The value of this transaction. Can be both negative and positive.
|
||||||
value = Column(Numeric, nullable=False)
|
value = Column(Numeric, nullable=False)
|
||||||
# Extra notes on the transaction
|
# Extra notes on the transaction
|
||||||
|
@ -109,8 +113,7 @@ class Transaction(TableDeclarativeBase):
|
||||||
|
|
||||||
# Extra table parameters
|
# Extra table parameters
|
||||||
__tablename__ = "transactions"
|
__tablename__ = "transactions"
|
||||||
__table_args__ = (UniqueConstraint("provider", "provider_id"),
|
__table_args__ = (UniqueConstraint("provider", "provider_id"),)
|
||||||
CheckConstraint("payment_email ~ '[^@]+@.+'")) # TODO: check this regex
|
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
"""Return the correctly formatted transaction value"""
|
"""Return the correctly formatted transaction value"""
|
||||||
|
@ -138,3 +141,8 @@ class Admin(TableDeclarativeBase):
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
return f"<Admin {self.user_id}>"
|
return f"<Admin {self.user_id}>"
|
||||||
|
|
||||||
|
|
||||||
|
# If this script is ran as main, try to create all the tables in the database
|
||||||
|
if __name__ == "__main__":
|
||||||
|
TableDeclarativeBase.metadata.create_all()
|
Loading…
Reference in a new issue