From 411abd66f6d0d8785d5c8b0267f5b60182a0c680 Mon Sep 17 00:00:00 2001 From: The Magician Date: Tue, 21 May 2024 15:52:26 +0100 Subject: [PATCH] Skip digital-only cards, close insert statements --- sevenkeys/database/operations/inserts.go | 3 ++- sevenkeys/main.go | 20 ++++++++++++++++++++ sevenkeys/scryfall/types/card.go | 21 +++++++++++---------- 3 files changed, 33 insertions(+), 11 deletions(-) diff --git a/sevenkeys/database/operations/inserts.go b/sevenkeys/database/operations/inserts.go index a07bc5d..af42f71 100644 --- a/sevenkeys/database/operations/inserts.go +++ b/sevenkeys/database/operations/inserts.go @@ -48,11 +48,12 @@ func InsertOrUpdateSet(db *sql.DB, set types.Set) error { } func InsertCard(db *sql.DB, card types.Card) error { - query := `INSERT INTO CardPrinting + query := `INSERT IGNORE INTO CardPrinting (Id, Name, SetCode, HasFoil, HasNonFoil, IsReserved, IsRacist, IsPromo, CollectorNumber, Language) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?);` insert, err := db.Prepare(query) + defer insert.Close() if err != nil { return err } diff --git a/sevenkeys/main.go b/sevenkeys/main.go index 95416f3..291a166 100644 --- a/sevenkeys/main.go +++ b/sevenkeys/main.go @@ -23,6 +23,8 @@ const SET_ICON_FILE_EXTENSION string = ".svg" const ALL_CARDS_CACHE_FILENAME = CACHE_DIR + "/all-cards.json" +const GAME_PAPER = "paper" + func check(err error) { if err != nil { log.Fatal(err) @@ -117,6 +119,12 @@ func cacheAllCardsFile(db *sql.DB, uri string, updatedAtTimestamp time.Time) err func importCards(db *sql.DB, cards []types.Card) error { for _, card := range cards { + // We're only interested in paper cards, so skip cards or printings of a card which + // aren't available in paper + if !isPaper(card) { + continue + } + err := operations.InsertCard(db, card) if err != nil { return err @@ -126,6 +134,18 @@ func importCards(db *sql.DB, cards []types.Card) error { return nil } +func isPaper(card types.Card) bool { + var paper bool = false + + for _, game := range card.Games { + if game == GAME_PAPER { + paper = true + } + } + + return paper +} + func main() { log.Println("Connecting to database...") db := database.GetDatabaseFromConfig("config.json") diff --git a/sevenkeys/scryfall/types/card.go b/sevenkeys/scryfall/types/card.go index 396bcdc..17cf224 100644 --- a/sevenkeys/scryfall/types/card.go +++ b/sevenkeys/scryfall/types/card.go @@ -1,14 +1,15 @@ package types type Card struct { - Id string `json:"id"` // GUID - Name string `json:"name"` - Set string `json:"set"` - Foil bool `json:"foil"` - NonFoil bool `json:"nonfoil"` - Reserved bool `json:"reserved"` - ContentWarning bool `json:"content_warning,omitempty"` - Promo bool `json:"promo"` - CollectorNumber string `json:"collector_number"` - Language string `json:"lang"` + Id string `json:"id"` // GUID + Name string `json:"name"` + Set string `json:"set"` + Games []string `json:"games"` + Foil bool `json:"foil"` + NonFoil bool `json:"nonfoil"` + Reserved bool `json:"reserved"` + ContentWarning bool `json:"content_warning,omitempty"` + Promo bool `json:"promo"` + CollectorNumber string `json:"collector_number"` + Language string `json:"lang"` }