"""SQLAlchemy ORM model for card import batches.""" from sqlalchemy import Column, Integer, String, DateTime, ForeignKey, Text, JSON, Boolean from sqlalchemy.orm import relationship from sqlalchemy.sql import func from app.core.database import Base class CardImportBatch(Base): """ Card import batch record. Tracks a single file import with its status and match results. """ __tablename__ = "card_import_batches" id = Column(Integer, primary_key=True, autoincrement=True) user_id = Column(Integer, ForeignKey("mtgonline_users.id", ondelete="CASCADE"), nullable=False, index=True) filename = Column(String(255), nullable=False) file_type = Column(String(10), nullable=False) # xlsx, csv, json, ods file_size = Column(Integer, nullable=False) # File size in bytes status = Column(String(20), nullable=False, default="pending", index=True) # pending, processing, completed, failed total_cards = Column(Integer, default=0) matched_cards = Column(Integer, default=0) unmatched_cards = Column(Integer, default=0) match_results = Column(JSON, nullable=True) # Store match results for later retrieval error_message = Column(Text, nullable=True) created_at = Column(DateTime, server_default=func.now()) updated_at = Column(DateTime, server_default=func.now(), onupdate=func.now()) # Relationships user = relationship("User", backref="import_batches") def __repr__(self) -> str: return f""