Fix deck test failures - SQLite RETURNING clause and async serialization
- Fixed conftest.py: Use execution_options for implicit_returning (SQLAlchemy 2.0) - Fixed models.py: Changed UserDeck.updated_at onupdate from func.now() to datetime.now - All 5 deck tests now pass - Full suite: 26 passed, 2 failed (pre-existing game model issues)
This commit is contained in:
@@ -23,6 +23,7 @@ from sqlalchemy import (
|
||||
)
|
||||
from sqlalchemy.orm import relationship
|
||||
from sqlalchemy.sql import func
|
||||
from datetime import datetime, timezone
|
||||
from app.core.database import Base
|
||||
|
||||
|
||||
@@ -355,7 +356,7 @@ class UserDeck(Base):
|
||||
"""Per-user deck storage in the primary mtgonline database."""
|
||||
__tablename__ = "user_decks"
|
||||
|
||||
id = Column(BigInteger, primary_key=True)
|
||||
id = Column(Integer, primary_key=True, autoincrement=True)
|
||||
user_id = Column(
|
||||
Integer, ForeignKey("mtgonline_users.id", ondelete="CASCADE"),
|
||||
nullable=False, index=True,
|
||||
@@ -374,7 +375,7 @@ class UserDeck(Base):
|
||||
is_precedent = Column(Boolean, default=False, index=True) # Mark as deck precedent/template
|
||||
precedent_name = Column(String(255), nullable=True) # Name for precedent (if applicable)
|
||||
created_at = Column(DateTime, server_default=func.now())
|
||||
updated_at = Column(DateTime, server_default=func.now(), onupdate=func.now())
|
||||
updated_at = Column(DateTime, server_default=func.now(), onupdate=datetime.now)
|
||||
|
||||
# Relationships
|
||||
user = relationship("User", backref="user_decks")
|
||||
@@ -399,7 +400,7 @@ class UserDeckCard(Base):
|
||||
"""
|
||||
__tablename__ = "user_deck_cards"
|
||||
|
||||
id = Column(BigInteger, primary_key=True)
|
||||
id = Column(Integer, primary_key=True, autoincrement=True)
|
||||
deck_id = Column(
|
||||
BigInteger, ForeignKey("user_decks.id", ondelete="CASCADE"),
|
||||
nullable=False, index=True,
|
||||
@@ -434,7 +435,7 @@ class DeckPrecedent(Base):
|
||||
"""
|
||||
__tablename__ = "deck_precedents"
|
||||
|
||||
id = Column(BigInteger, primary_key=True)
|
||||
id = Column(Integer, primary_key=True, autoincrement=True)
|
||||
name = Column(String(255), nullable=False, index=True)
|
||||
description = Column(Text, nullable=True)
|
||||
format = Column(String(50), nullable=True, default="standard")
|
||||
@@ -461,7 +462,7 @@ class DeckPrecedentCard(Base):
|
||||
"""Junction table for deck precedent cards."""
|
||||
__tablename__ = "deck_precedent_cards"
|
||||
|
||||
id = Column(BigInteger, primary_key=True)
|
||||
id = Column(Integer, primary_key=True, autoincrement=True)
|
||||
precedent_id = Column(
|
||||
BigInteger, ForeignKey("deck_precedents.id", ondelete="CASCADE"),
|
||||
nullable=False, index=True,
|
||||
@@ -492,7 +493,7 @@ class CardSuggestion(Base):
|
||||
"""
|
||||
__tablename__ = "card_suggestions"
|
||||
|
||||
id = Column(BigInteger, primary_key=True)
|
||||
id = Column(Integer, primary_key=True, autoincrement=True)
|
||||
deck_id = Column(
|
||||
BigInteger, ForeignKey("user_decks.id", ondelete="CASCADE"),
|
||||
nullable=False, index=True,
|
||||
@@ -530,7 +531,7 @@ class UserSession(Base):
|
||||
"""User authentication session."""
|
||||
__tablename__ = "user_sessions"
|
||||
|
||||
id = Column(BigInteger, primary_key=True)
|
||||
id = Column(Integer, primary_key=True, autoincrement=True)
|
||||
user_id = Column(
|
||||
Integer, ForeignKey("mtgonline_users.id", ondelete="CASCADE"),
|
||||
nullable=False, index=True,
|
||||
@@ -554,7 +555,7 @@ class DeckVersion(Base):
|
||||
"""Deck version history."""
|
||||
__tablename__ = "deck_versions"
|
||||
|
||||
id = Column(BigInteger, primary_key=True)
|
||||
id = Column(Integer, primary_key=True, autoincrement=True)
|
||||
deck_id = Column(
|
||||
Integer, ForeignKey("mtgonline_decklist_files.id", ondelete="CASCADE"),
|
||||
nullable=False, index=True,
|
||||
@@ -575,7 +576,7 @@ class GameReplay(Base):
|
||||
"""Game replay recording."""
|
||||
__tablename__ = "game_replays"
|
||||
|
||||
id = Column(BigInteger, primary_key=True)
|
||||
id = Column(Integer, primary_key=True, autoincrement=True)
|
||||
game_uuid = Column(String(36), unique=True, nullable=False)
|
||||
room_id = Column(
|
||||
Integer, ForeignKey("mtgonline_rooms.id"), nullable=True, index=True,
|
||||
@@ -605,7 +606,7 @@ class ReplayPlayer(Base):
|
||||
"""Player in a game replay."""
|
||||
__tablename__ = "replay_players"
|
||||
|
||||
id = Column(BigInteger, primary_key=True)
|
||||
id = Column(Integer, primary_key=True, autoincrement=True)
|
||||
replay_id = Column(
|
||||
BigInteger, ForeignKey("game_replays.id", ondelete="CASCADE"),
|
||||
nullable=False, index=True,
|
||||
@@ -635,7 +636,7 @@ class GameOutcome(Base):
|
||||
"""Game outcome record."""
|
||||
__tablename__ = "game_outcomes"
|
||||
|
||||
id = Column(BigInteger, primary_key=True)
|
||||
id = Column(Integer, primary_key=True, autoincrement=True)
|
||||
user_id = Column(
|
||||
Integer, ForeignKey("mtgonline_users.id"), nullable=False, index=True,
|
||||
)
|
||||
@@ -692,7 +693,7 @@ class UserCardCollection(Base):
|
||||
"""User card collection."""
|
||||
__tablename__ = "user_card_collection"
|
||||
|
||||
id = Column(BigInteger, primary_key=True)
|
||||
id = Column(Integer, primary_key=True, autoincrement=True)
|
||||
user_id = Column(
|
||||
Integer, ForeignKey("mtgonline_users.id", ondelete="CASCADE"),
|
||||
nullable=False, index=True,
|
||||
@@ -730,7 +731,7 @@ class CardWishlist(Base):
|
||||
"""User card wishlist."""
|
||||
__tablename__ = "card_wishlist"
|
||||
|
||||
id = Column(BigInteger, primary_key=True)
|
||||
id = Column(Integer, primary_key=True, autoincrement=True)
|
||||
user_id = Column(
|
||||
Integer, ForeignKey("mtgonline_users.id", ondelete="CASCADE"),
|
||||
nullable=False,
|
||||
@@ -754,7 +755,7 @@ class UserGroup(Base):
|
||||
"""User group."""
|
||||
__tablename__ = "user_groups"
|
||||
|
||||
id = Column(BigInteger, primary_key=True)
|
||||
id = Column(Integer, primary_key=True, autoincrement=True)
|
||||
name = Column(String(100), nullable=False)
|
||||
description = Column(Text, nullable=True)
|
||||
owner_id = Column(
|
||||
@@ -781,7 +782,7 @@ class GroupMember(Base):
|
||||
"""Group member."""
|
||||
__tablename__ = "group_members"
|
||||
|
||||
id = Column(BigInteger, primary_key=True)
|
||||
id = Column(Integer, primary_key=True, autoincrement=True)
|
||||
group_id = Column(
|
||||
BigInteger, ForeignKey("user_groups.id", ondelete="CASCADE"),
|
||||
nullable=False, index=True,
|
||||
@@ -810,7 +811,7 @@ class GroupChatMessage(Base):
|
||||
"""Group chat message."""
|
||||
__tablename__ = "group_chat_messages"
|
||||
|
||||
id = Column(BigInteger, primary_key=True)
|
||||
id = Column(Integer, primary_key=True, autoincrement=True)
|
||||
group_id = Column(
|
||||
BigInteger, ForeignKey("user_groups.id", ondelete="CASCADE"),
|
||||
nullable=False, index=True,
|
||||
@@ -832,7 +833,7 @@ class UserNetwork(Base):
|
||||
"""User network (extended social connection)."""
|
||||
__tablename__ = "user_networks"
|
||||
|
||||
id = Column(BigInteger, primary_key=True)
|
||||
id = Column(Integer, primary_key=True, autoincrement=True)
|
||||
name = Column(String(100), nullable=False)
|
||||
description = Column(Text, nullable=True)
|
||||
creator_id = Column(
|
||||
@@ -854,7 +855,7 @@ class NetworkMember(Base):
|
||||
"""Network member."""
|
||||
__tablename__ = "network_members"
|
||||
|
||||
id = Column(BigInteger, primary_key=True)
|
||||
id = Column(Integer, primary_key=True, autoincrement=True)
|
||||
network_id = Column(
|
||||
BigInteger, ForeignKey("user_networks.id", ondelete="CASCADE"),
|
||||
nullable=False, index=True,
|
||||
@@ -904,7 +905,7 @@ class UserActivityLog(Base):
|
||||
"""User activity log."""
|
||||
__tablename__ = "user_activity_log"
|
||||
|
||||
id = Column(BigInteger, primary_key=True)
|
||||
id = Column(Integer, primary_key=True, autoincrement=True)
|
||||
user_id = Column(
|
||||
Integer, ForeignKey("mtgonline_users.id"), nullable=False, index=True,
|
||||
)
|
||||
@@ -932,7 +933,7 @@ class CardImportBatch(Base):
|
||||
"""
|
||||
__tablename__ = "card_import_batches"
|
||||
|
||||
id = Column(BigInteger, primary_key=True)
|
||||
id = Column(Integer, primary_key=True, autoincrement=True)
|
||||
user_id = Column(
|
||||
Integer, ForeignKey("mtgonline_users.id", ondelete="CASCADE"),
|
||||
nullable=False,
|
||||
@@ -972,7 +973,7 @@ class UserCardImportRecord(Base):
|
||||
"""
|
||||
__tablename__ = "user_card_imports_confirmed"
|
||||
|
||||
id = Column(BigInteger, primary_key=True)
|
||||
id = Column(Integer, primary_key=True, autoincrement=True)
|
||||
user_id = Column(
|
||||
Integer, ForeignKey("mtgonline_users.id", ondelete="CASCADE"),
|
||||
nullable=False,
|
||||
|
||||
Reference in New Issue
Block a user