from sqlalchemy import Column, Integer, String, Float, DateTime, ForeignKey from sqlalchemy.sql import func from app.db.database import Base from sqlalchemy.orm import relationship class TCGPlayerInventory(Base): __tablename__ = "tcgplayer_inventory" id = Column(Integer, primary_key=True, index=True) tcgplayer_sku_id = Column(Integer, unique=True, index=True) product_line = Column(String) set_name = Column(String) product_name = Column(String) title = Column(String) number = Column(String) rarity = Column(String) condition = Column(String) tcg_market_price = Column(Float) tcg_direct_low = Column(Float) tcg_low_price_with_shipping = Column(Float) tcg_low_price = Column(Float) total_quantity = Column(Integer) add_to_quantity = Column(Integer) tcg_marketplace_price = Column(Float) photo_url = Column(String) created_at = Column(DateTime(timezone=True), server_default=func.now()) updated_at = Column(DateTime(timezone=True), server_default=func.now(), onupdate=func.now()) # relationships unmanaged_inventory = relationship("UnmanagedTCGPlayerInventory", back_populates="tcgplayer_inventory") sku = relationship("MTGJSONSKU", primaryjoin="foreign(MTGJSONSKU.tcgplayer_sku_id) == TCGPlayerInventory.tcgplayer_sku_id", viewonly=True) class UnmanagedTCGPlayerInventory(Base): __tablename__ = "unmanaged_tcgplayer_inventory" id = Column(Integer, primary_key=True, index=True) tcgplayer_inventory_id = Column(Integer, ForeignKey("tcgplayer_inventory.id"), unique=True, index=True) tcgplayer_sku_id = Column(Integer, unique=True, index=True) product_line = Column(String) set_name = Column(String) product_name = Column(String) title = Column(String) number = Column(String) rarity = Column(String) condition = Column(String) tcg_market_price = Column(Float) tcg_direct_low = Column(Float) tcg_low_price_with_shipping = Column(Float) tcg_low_price = Column(Float) total_quantity = Column(Integer) add_to_quantity = Column(Integer) tcg_marketplace_price = Column(Float) photo_url = Column(String) created_at = Column(DateTime(timezone=True), server_default=func.now()) updated_at = Column(DateTime(timezone=True), server_default=func.now(), onupdate=func.now()) # relationships tcgplayer_inventory = relationship("TCGPlayerInventory", back_populates="unmanaged_inventory") sku = relationship("MTGJSONSKU", primaryjoin="foreign(MTGJSONSKU.tcgplayer_sku_id) == UnmanagedTCGPlayerInventory.tcgplayer_sku_id", viewonly=True)