36 lines
1.6 KiB
Python

from sqlalchemy import Column, Integer, String, Float, ForeignKey, Text
from sqlalchemy.orm import relationship
import enum
from app.db.base_class import Base
class TransactionType(str, enum.Enum):
DEPOSIT = "deposit"
WITHDRAWAL = "withdrawal"
TRANSFER = "transfer"
BOT_PURCHASE = "bot_purchase"
BOT_EARNING = "bot_earning"
ADMIN_ADJUSTMENT = "admin_adjustment"
class Transaction(Base):
id = Column(Integer, primary_key=True, index=True)
user_id = Column(Integer, ForeignKey("user.id"), nullable=False)
wallet_id = Column(Integer, ForeignKey("wallet.id"), nullable=False)
deposit_id = Column(Integer, ForeignKey("deposit.id"), nullable=True)
withdrawal_id = Column(Integer, ForeignKey("withdrawal.id"), nullable=True)
bot_purchase_id = Column(Integer, ForeignKey("botpurchase.id"), nullable=True)
transaction_type = Column(String, nullable=False)
amount = Column(Float, nullable=False)
description = Column(Text, nullable=True)
related_transaction_id = Column(Integer, ForeignKey("transaction.id"), nullable=True)
# Relationships
user = relationship("User", back_populates="transactions")
wallet = relationship("Wallet", back_populates="transactions")
deposit = relationship("Deposit", back_populates="transaction", uselist=False)
withdrawal = relationship("Withdrawal", back_populates="transaction", uselist=False)
bot_purchase = relationship("BotPurchase", back_populates="transaction", uselist=False)
related_transaction = relationship("Transaction", remote_side=[id], uselist=False)