from sqlalchemy import Column, Integer, String, Float, DateTime, Text from sqlalchemy.sql import func from app.db.base import Base class Transaction(Base): __tablename__ = "transactions" id = Column(Integer, primary_key=True, index=True) transaction_id = Column(String, unique=True, index=True, nullable=False) user_id = Column(String, index=True, nullable=False) account_id = Column(String, index=True, nullable=False) amount = Column(Float, nullable=False) currency = Column(String, default="NGN") transaction_type = Column(String, nullable=False) # debit, credit, transfer merchant_id = Column(String, index=True, nullable=True) merchant_category = Column(String, nullable=True) channel = Column(String, nullable=False) # web, mobile, atm, pos location = Column(String, nullable=True) ip_address = Column(String, nullable=True) device_id = Column(String, index=True, nullable=True) status = Column(String, default="pending") # pending, completed, failed metadata = Column(Text, nullable=True) # JSON string for additional fields created_at = Column(DateTime(timezone=True), server_default=func.now()) updated_at = Column(DateTime(timezone=True), onupdate=func.now())