package database import ( "database/sql" "log" "sevenkeys/scryfall" ) func CheckSetExists(db *sql.DB, setCode string) bool { query := "SELECT Id FROM ExpansionSet WHERE SetCode = ?;" var setId int row := db.QueryRow(query, setCode) err := row.Scan(&setId) if err == sql.ErrNoRows { return false } else if err != nil { log.Fatal(err) } return true } func insertSet(db *sql.DB, set scryfall.Set) error { query := "INSERT INTO ExpansionSet (SetCode, Name, SetType, ReleasedAt, BlockCode, Block, ParentSetCode, CardCount, PrintedSize, Digital, FoilOnly, NonfoilOnly, IconSvgUri) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);" insert, err := db.Prepare(query) defer insert.Close() if err != nil { return err } if CheckSetExists(db, set.Code) { log.Println("Skipping " + set.Code + ", already in database") return nil } _, err = insert.Exec(set.Code, set.Name, set.SetType, set.ReleasedAt, set.BlockCode, set.Block, set.ParentSetCode, set.CardCount, set.PrintedSize, set.Digital, set.FoilOnly, set.NonfoilOnly, set.IconSvgUri) if err != nil { return err } return nil } func InsertSets(db *sql.DB, setList scryfall.SetList) error { for index := range setList.Data { set := setList.Data[index] err := insertSet(db, set) if err != nil { return err } } return nil }