uploader-bot/app/core/models/transaction.py

39 lines
1.7 KiB
Python

from sqlalchemy import Column, Integer, String, ForeignKey, DateTime, Boolean, Float
from sqlalchemy.orm import relationship
from .base import AlchemyBase
class UserBalance(AlchemyBase):
__tablename__ = 'user_balances'
id = Column(Integer, autoincrement=True, primary_key=True)
user_id = Column(Integer, ForeignKey('users.id'), nullable=False)
asset_id = Column(Integer, ForeignKey('assets.id'), nullable=False)
balance = Column(Float, nullable=False, default=0)
updated = Column(DateTime, nullable=False, default=0)
created = Column(DateTime, nullable=False, default=0)
user = relationship('User', uselist=False, foreign_keys=[user_id], back_populates='balances')
asset = relationship('Asset', uselist=False, foreign_keys=[asset_id], back_populates='balances')
class InternalTransaction(AlchemyBase):
__tablename__ = 'internal_transactions'
id = Column(Integer, autoincrement=True, primary_key=True)
user_id = Column(Integer, ForeignKey('users.id'), nullable=False)
asset_id = Column(Integer, ForeignKey('assets.id'), nullable=False)
amount = Column(Float, nullable=False)
is_spent = Column(Boolean, nullable=False) # transaction type
spent_transaction_id = Column(Integer, ForeignKey('internal_transactions.id'), nullable=True)
type = Column(String(256), nullable=False, default="NOT_SPECIFIED")
created = Column(DateTime, nullable=False, default=0)
user = relationship('User', uselist=False, back_populates='internal_transactions', foreign_keys=[user_id])
asset = relationship('Asset', uselist=False, foreign_keys=[asset_id])
spent_transaction = relationship('InternalTransaction', uselist=False, foreign_keys=[spent_transaction_id])