mtg_python_deckbuilder/code/web/models/theme_api.py

31 lines
1.1 KiB
Python
Raw Permalink Normal View History

from __future__ import annotations
from typing import List, Optional
from pydantic import BaseModel, Field
class ThemeSummary(BaseModel):
id: str
theme: str
primary_color: Optional[str] = None
secondary_color: Optional[str] = None
popularity_bucket: Optional[str] = None
deck_archetype: Optional[str] = None
description: Optional[str] = None
synergies: List[str] = Field(default_factory=list)
synergy_count: int = 0
# Diagnostics-only fields (gated by flag)
has_fallback_description: Optional[bool] = None
editorial_quality: Optional[str] = None
class ThemeDetail(ThemeSummary):
curated_synergies: List[str] = Field(default_factory=list)
enforced_synergies: List[str] = Field(default_factory=list)
inferred_synergies: List[str] = Field(default_factory=list)
example_commanders: List[str] = Field(default_factory=list)
example_cards: List[str] = Field(default_factory=list)
synergy_commanders: List[str] = Field(default_factory=list)
# Diagnostics-only optional uncapped list
uncapped_synergies: Optional[List[str]] = None