57 lines
2.3 KiB
Python
57 lines
2.3 KiB
Python
from sqlalchemy import Column, Integer, String, ForeignKey, DateTime, Boolean, Float
|
|
from sqlalchemy.orm import relationship
|
|
from datetime import datetime
|
|
|
|
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])
|
|
|
|
class StarsInvoice(AlchemyBase):
|
|
__tablename__ = 'stars_invoices'
|
|
|
|
id = Column(Integer, autoincrement=True, primary_key=True)
|
|
external_id = Column(String(1024), nullable=False)
|
|
|
|
type = Column(String(256), nullable=False)
|
|
amount = Column(Integer, nullable=False)
|
|
|
|
user_id = Column(Integer, ForeignKey('users.id'), nullable=True)
|
|
content_hash = Column(String(256), nullable=True)
|
|
|
|
invoice_url = Column(String(256), nullable=True)
|
|
paid = Column(Boolean, nullable=False, default=False)
|
|
|
|
created = Column(DateTime, nullable=False, default=datetime.utcnow)
|