2024-04-23 20:45:55 +00:00
|
|
|
package imports
|
2024-04-23 16:52:48 +00:00
|
|
|
|
|
|
|
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
|
|
|
|
}
|
|
|
|
|
2024-04-23 20:45:55 +00:00
|
|
|
result, 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)
|
|
|
|
rowsAffected, err := result.RowsAffected()
|
|
|
|
if err != nil || rowsAffected != 1 {
|
2024-04-23 16:52:48 +00:00
|
|
|
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
|
|
|
|
}
|