package operations import ( "database/sql" "errors" "log" "sevenkeys/scryfall/types" ) var ErrGamepieceExists error = errors.New("Gamepiece already exists in database") func insertGamepiece(db *sql.DB, cardName string) (int, error) { gamepieceInsertQuery := "INSERT INTO Gamepiece (Name) VALUES (?);" gamepieceInsert, err := db.Prepare(gamepieceInsertQuery) defer gamepieceInsert.Close() if err != nil { log.Fatal(err) } existingGamepiece, err := GetGamepieceByName(db, cardName) if err != sql.ErrNoRows { return existingGamepiece.Id, ErrGamepieceExists } result, err := gamepieceInsert.Exec(cardName) if err != nil { log.Fatal(err) } gamepieceId, err := result.LastInsertId() if err != nil { log.Fatal(err) } return int(gamepieceId), nil } func insertCardPrinting(db *sql.DB, gamepieceId int, setCode string, imageUrl string) { cardPrintingInsertQuery := "INSERT INTO CardPrinting (GamepieceId, SetCode, ImageUrl) VALUES (?, ?, ?);" cardPrintingInsert, err := db.Prepare(cardPrintingInsertQuery) defer cardPrintingInsert.Close() if err != nil { log.Fatal(err) } _, err = cardPrintingInsert.Exec(gamepieceId, setCode, imageUrl) if err != nil { log.Fatal(err) } } func InsertCards(db *sql.DB, cards []types.Card) { for index := range cards { card := cards[index] gamepieceId, _ := insertGamepiece(db, card.Name) insertCardPrinting(db, gamepieceId, card.Set, card.ImageUris["png"]) } }