Phase 3: Schema Layer - Pydantic v2 migration, deduplication, and missing schemas
- Migrated all schemas to Pydantic v2 syntax (model_config, ConfigDict) - Fixed mutable default in ProtoMessageBase using Field(default_factory=datetime.now) - Consolidated CardCollection and Wishlist schemas in user_card_collection.py - Created game_schemas.py with GameCreate, GameResponse, GameJoinRequest, etc. - Created mtg_card_schemas.py with MtgCardResponse, MtgCardSearchRequest, etc. - Added CardImportBatchCreate, CardImportBatchResponse, UserCardImportCreate/Response schemas - Fixed duplicate UserCardImportRecord class between card_import_batch.py and user_card_import_record.py - Updated __init__.py with comprehensive schema exports - Created verify_schemas.py for schema-model matching verification
This commit is contained in:
@@ -80,8 +80,21 @@ class MtgonlineCard(Base):
|
||||
synced_at = Column(DateTime, server_default=func.now(), onupdate=func.now())
|
||||
created_at = Column(DateTime, server_default=func.now())
|
||||
|
||||
# Relationships
|
||||
deck_cards = relationship(
|
||||
"UserDeckCard",
|
||||
back_populates="card",
|
||||
cascade="all, delete-orphan"
|
||||
)
|
||||
|
||||
# Indexes
|
||||
__table_args__ = (
|
||||
Index('idx_mtgonline_cards_name', 'name'),
|
||||
Index('idx_mtgonline_cards_set', 'set_code'),
|
||||
)
|
||||
|
||||
def __repr__(self) -> str:
|
||||
return f"<MtonlineCard {self.name} (ID: {self.id}, source: {self.source_id})>"
|
||||
return f"<MtgonlineCard {self.name} (ID: {self.id}, source: {self.source_id})>"
|
||||
|
||||
|
||||
class DecklistFolder(Base):
|
||||
@@ -99,6 +112,11 @@ class DecklistFolder(Base):
|
||||
children = relationship("DecklistFolder", back_populates="parent", cascade="all, delete-orphan")
|
||||
parent = relationship("DecklistFolder", back_populates="children", remote_side=[id])
|
||||
files = relationship("DecklistFile", back_populates="folder", cascade="all, delete-orphan")
|
||||
user_decks = relationship(
|
||||
"UserDeck",
|
||||
back_populates="folder",
|
||||
lazy="select"
|
||||
)
|
||||
|
||||
|
||||
class DecklistFile(Base):
|
||||
|
||||
Reference in New Issue
Block a user