Add a materialized view tracking collection price history

This commit is contained in:
Correl Roush 2024-07-24 22:25:48 -04:00
parent ab66c92871
commit 69651f259d
2 changed files with 14 additions and 0 deletions

View file

@ -0,0 +1,13 @@
DROP MATERIALIZED VIEW IF EXISTS "collection_price_history";
CREATE MATERIALIZED VIEW "collection_price_history" AS
SELECT "card_prices"."date"::timestamp AS "date"
, SUM(CASE WHEN "copies"."isFoil"
THEN "card_prices"."usd_foil"
ELSE "card_prices"."usd"
END) AS "value"
FROM "cards"
JOIN "copies" USING ("scryfall_id")
JOIN "card_prices" USING ("scryfall_id")
WHERE "copies"."created_date" <= "card_prices"."date"::timestamp
GROUP BY "card_prices"."date"
ORDER BY "card_prices"."date";

View file

@ -329,6 +329,7 @@ def update_scryfall(ctx, filename):
print("Refreshing materialized views")
await cursor.execute('REFRESH MATERIALIZED VIEW "cards"')
await cursor.execute('REFRESH MATERIALIZED VIEW "oracle_latest"')
await cursor.execute('REFRESH MATERIALIZED VIEW "collection_price_history"')
await tutor.database.store_var(cursor, "last_update", str(today))
await conn.commit()