from sqlalchemy import Column, Integer, String, DateTime, Float, ForeignKey from sqlalchemy.orm import relationship from datetime import datetime from app.db.base import Base class Transaction(Base): __tablename__ = "transactions" id = Column(Integer, primary_key=True, index=True) transaction_hash = Column(String, unique=True, nullable=False) quantity = Column(Integer, nullable=False) price_per_credit = Column(Float, nullable=False) total_amount = Column(Float, nullable=False) # Transaction status status = Column(String, default="pending") # "pending", "confirmed", "failed" # Blockchain information block_number = Column(Integer, nullable=True) gas_used = Column(Integer, nullable=True) # Timestamps created_at = Column(DateTime, default=datetime.utcnow) confirmed_at = Column(DateTime, nullable=True) # Foreign keys buyer_id = Column(Integer, ForeignKey("users.id"), nullable=False) offset_id = Column(Integer, ForeignKey("carbon_offsets.id"), nullable=False) # Relationships buyer = relationship("User", back_populates="transactions") offset = relationship("CarbonOffset", back_populates="transactions")