Add Cardtrader data during update

This commit is contained in:
The Magician 2024-12-10 19:39:25 +00:00
parent 848754b509
commit ceceb4722f
6 changed files with 163 additions and 4 deletions

View File

@ -0,0 +1,66 @@
package database
import (
"database/sql"
"fmt"
"github.com/mtgban/go-mtgban/cardtrader"
)
func InsertCardtraderBlueprint(db *sql.DB, blueprint cardtrader.Blueprint) error {
query := `INSERT INTO CardtraderBlueprint (
Id,
CardtraderCategoryId,
CardtraderExpansionId,
Name,
CollectorNumber
) VALUES (
?, ?, ?, ?, ?
)
ON DUPLICATE KEY UPDATE
Id = ?,
CardtraderCategoryId = ?,
CardtraderExpansionId = ?,
Name = ?,
CollectorNumber = ?;`
insert, err := db.Prepare(query)
defer insert.Close()
if err != nil {
return err
}
_, err = insert.Exec(blueprint.Id,
blueprint.CategoryId,
blueprint.ExpansionId,
blueprint.Name,
blueprint.FixedProperties.Number,
blueprint.Id,
blueprint.CategoryId,
blueprint.ExpansionId,
blueprint.Name,
blueprint.FixedProperties.Number)
if err != nil {
fmt.Println(blueprint.FixedProperties.Number)
return err
}
return nil
}
/*
func GetAllCardtraderBlueprints(db *sql.DB) ([]cardtrader.Blueprint, error) {
var blueprints []cardtrader.Blueprint
query := `SELECT * FROM CardtraderBlueprint;`
rows, err := db.Query(query)
defer rows.Close()
if err != nil {
return blueprints, err
}
var blueprint cardtrader.Blueprint
for rows.Next() {
}
}
*/

View File

@ -0,0 +1,25 @@
package database
import (
"database/sql"
"github.com/mtgban/go-mtgban/cardtrader"
)
func InsertCardtraderExpansion(db *sql.DB, expansion cardtrader.Expansion) error {
query := `INSERT INTO CardtraderExpansion (Id, Code, Name) VALUES (?, ?, ?)
ON DUPLICATE KEY UPDATE Id = ?, Code = ?, Name = ?;`
insert, err := db.Prepare(query)
defer insert.Close()
if err != nil {
return err
}
_, err = insert.Exec(expansion.Id, expansion.Code, expansion.Name, expansion.Id, expansion.Code, expansion.Name)
if err != nil {
return err
}
return nil
}

View File

@ -2,7 +2,8 @@
-- +goose StatementBegin -- +goose StatementBegin
CREATE TABLE IF NOT EXISTS CardtraderExpansion ( CREATE TABLE IF NOT EXISTS CardtraderExpansion (
Id INT PRIMARY KEY AUTO_INCREMENT, Id INT PRIMARY KEY AUTO_INCREMENT,
ExpansionCode VARCHAR(20) NOT NULL Code VARCHAR(20) NOT NULL,
Name VARCHAR(255) NOT NULL
); );
CREATE TABLE IF NOT EXISTS CardtraderBlueprint ( CREATE TABLE IF NOT EXISTS CardtraderBlueprint (
@ -11,7 +12,7 @@ CREATE TABLE IF NOT EXISTS CardtraderBlueprint (
CardtraderExpansionId INT NOT NULL, CardtraderExpansionId INT NOT NULL,
FOREIGN KEY (CardtraderExpansionId) REFERENCES CardtraderExpansion(Id), FOREIGN KEY (CardtraderExpansionId) REFERENCES CardtraderExpansion(Id),
Name VARCHAR(255) NOT NULL, Name VARCHAR(255) NOT NULL,
CollectorNumber VARCHAR(10) NOT NULL CollectorNumber VARCHAR(50) NOT NULL
); );
-- +goose StatementEnd -- +goose StatementEnd

View File

@ -0,0 +1,12 @@
package logic
/*
func GetAllBlueprints(db *sql.DB) ([]cardtrader.Blueprint, error) {
blueprints, err := database.GetAllBlueprints(db)
if err != nil {
return nil, err
}
return blueprints, nil
}
*/

View File

@ -30,6 +30,7 @@ const (
DeckSubcommand string = "deck" DeckSubcommand string = "deck"
GetProductIdSubcommand string = "products" GetProductIdSubcommand string = "products"
MatchSubcommands string = "match"
) )
func main() { func main() {
@ -48,8 +49,11 @@ func main() {
switch flag.Args()[0] { switch flag.Args()[0] {
case UpdateSubcommand: case UpdateSubcommand:
update.UpdateScryfallData(db) err := update.UpdateScryfallData(db)
//update.UpdateCardtraderData(config.CardtraderToken) logic.Check(err)
err = update.UpdateCardtraderData(db, config.CardtraderToken)
logic.Check(err)
break break
case CreateStorageAreaSubcommand: case CreateStorageAreaSubcommand:
createStorageCmd := flag.NewFlagSet(CreateStorageAreaSubcommand, flag.ExitOnError) createStorageCmd := flag.NewFlagSet(CreateStorageAreaSubcommand, flag.ExitOnError)
@ -248,6 +252,15 @@ func main() {
fmt.Printf("x%d\n", product.Quantity) fmt.Printf("x%d\n", product.Quantity)
} }
break break
/*
case MatchSubcommands:
cardLocations, err := logic.GetAllStorageSearchOptions(db)
logic.Check(err)
blueprints, err := logic.GetAllBlueprints(db)
logic.Check(err)
break
*/
default: default:
fmt.Fprintf(os.Stderr, "Unrecognized subcommand: %s\n", os.Args[1]) fmt.Fprintf(os.Stderr, "Unrecognized subcommand: %s\n", os.Args[1])
break break

View File

@ -0,0 +1,42 @@
package update
import (
"database/sql"
"sevenkeys/database"
"github.com/mtgban/go-mtgban/cardtrader"
)
func UpdateCardtraderData(db *sql.DB, token string) error {
client := cardtrader.NewCTAuthClient(token)
expansions, err := client.Expansions()
if err != nil {
return err
}
for _, expansion := range expansions {
if expansion.GameId != cardtrader.GameIdMagic {
continue
}
err = database.InsertCardtraderExpansion(db, expansion)
if err != nil {
return err
}
blueprints, err := client.Blueprints(expansion.Id)
if err != nil {
return err
}
for _, blueprint := range blueprints {
err = database.InsertCardtraderBlueprint(db, blueprint)
if err != nil {
return err
}
}
}
return nil
}