Include CMC and Mana Cost in card data

This commit is contained in:
Correl Roush 2023-01-11 16:02:24 -05:00
parent 0731bf8429
commit 14e5ddaa24
6 changed files with 16 additions and 3 deletions

View file

@ -34,6 +34,7 @@ CREATE TABLE IF NOT EXISTS "oracle" (
"name" TEXT NOT NULL,
"color_identity" TEXT NOT NULL,
"cmc" DECIMAL(10, 2) NOT NULL,
"mana_cost" TEXT,
"type_line" TEXT NOT NULL,
"edhrec_rank" INTEGER,
"oracle_text" TEXT,
@ -139,6 +140,7 @@ SELECT "oracle"."oracle_id"
, "oracle"."name"
, "oracle"."color_identity"
, "oracle"."cmc"
, "oracle"."mana_cost"
, "oracle"."type_line"
, "oracle"."edhrec_rank"
, "oracle"."oracle_text"
@ -156,6 +158,7 @@ SELECT "oracle"."oracle_id"
, "oracle"."name"
, "oracle"."color_identity"
, "oracle"."cmc"
, "oracle"."mana_cost"
, "oracle"."type_line"
, "oracle"."edhrec_rank"
, "oracle"."oracle_text"

View file

@ -253,6 +253,7 @@ def update_scryfall(ctx, filename):
, "name"
, "color_identity"
, "cmc"
, "mana_cost"
, "type_line"
, "edhrec_rank"
, "oracle_text"
@ -263,6 +264,7 @@ def update_scryfall(ctx, filename):
, "name" = "excluded"."name"
, "color_identity" = "excluded"."color_identity"
, "cmc" = "excluded"."cmc"
, "mana_cost" = "excluded"."mana_cost"
, "type_line" = "excluded"."type_line"
, "edhrec_rank" = "excluded"."edhrec_rank"
, "oracle_text" = "excluded"."oracle_text"

View file

@ -260,11 +260,12 @@ async def store_card(db: psycopg.Cursor, card: tutor.models.Card) -> None:
"""
INSERT INTO tmp_cards
("scryfall_id", "oracle_id", "name", "set_code", "collector_number",
"rarity", "color_identity", "cmc", "type_line", "release_date",
"edhrec_rank", "oracle_text")
"rarity", "color_identity", "cmc", "mana_cost", "type_line",
"release_date", "edhrec_rank", "oracle_text")
VALUES (%(scryfall_id)s, %(oracle_id)s, %(name)s, %(set_code)s,
%(collector_number)s, %(rarity)s, %(color_identity)s, %(cmc)s,
%(type_line)s, %(release_date)s, %(edhrec_rank)s, %(oracle_text)s)
%(mana_cost)s, %(type_line)s, %(release_date)s, %(edhrec_rank)s,
%(oracle_text)s)
""",
{
"scryfall_id": str(card.scryfall_id),
@ -275,6 +276,7 @@ async def store_card(db: psycopg.Cursor, card: tutor.models.Card) -> None:
"rarity": str(card.rarity),
"color_identity": tutor.models.Color.to_string(card.color_identity),
"cmc": str(card.cmc),
"mana_cost": card.mana_cost,
"type_line": card.type_line,
"release_date": str(card.release_date) if card.release_date else None,
"edhrec_rank": card.edhrec_rank,

View file

@ -71,6 +71,7 @@ class OracleCard:
type_line: str
games: typing.Set[Game]
legalities: typing.Dict[str, Legality]
mana_cost: typing.Optional[str] = None
edhrec_rank: typing.Optional[int] = None
oracle_text: typing.Optional[str] = None
@ -89,6 +90,7 @@ class Card:
release_date: datetime.date
games: typing.Set[Game]
legalities: typing.Dict[str, Legality]
mana_cost: typing.Optional[str] = None
edhrec_rank: typing.Optional[int] = None
oracle_text: typing.Optional[str] = None
price_usd: typing.Optional[decimal.Decimal] = None

View file

@ -19,6 +19,7 @@ def to_card(data: dict) -> tutor.models.Card:
"".join(data.get("color_identity", []))
),
cmc=decimal.Decimal(data.get("cmc", "0")),
mana_cost=data.get("mana_cost"),
type_line=data.get("type_line", ""),
release_date=datetime.date.fromisoformat(data["released_at"])
if "released_at" in data

View file

@ -60,6 +60,7 @@ class JSONEncoder(json.JSONEncoder):
"color_identity": tutor.models.Color.to_string(card.color_identity),
"oracle_text": card.oracle_text,
"cmc": float(card.cmc),
"mana_cost": card.mana_cost,
"type_line": card.type_line,
}
@ -77,6 +78,8 @@ class JSONEncoder(json.JSONEncoder):
"collector_number": card.collector_number,
"rarity": str(card.rarity),
"color_identity": tutor.models.Color.to_string(card.color_identity),
"cmc": float(card.cmc),
"mana_cost": card.mana_cost,
"type_line": card.type_line,
"oracle_text": card.oracle_text,
"prices": {