TheMathemagicians/sevenkeys/main.go

77 lines
1.7 KiB
Go

package main
import (
"fmt"
"sevenkeys/database"
"sevenkeys/logic"
"sevenkeys/logic/scryfall"
"github.com/inancgumus/screen"
)
func main() {
db := database.GetDatabaseFromConfig("config.json")
fmt.Println("Checking for updates...")
bulkData, err := scryfall.GetBulkDataByType(scryfall.BulkDataTypeAllCards)
logic.Check(err)
needsUpdate, err := logic.CheckForUpdates(db, bulkData)
logic.Check(err)
if needsUpdate {
fmt.Println("Update required.")
if logic.ConfirmUpdate() {
fmt.Println("Running update...")
logic.CreateCacheDirectories()
err = logic.UpdateSets(db)
logic.Check(err)
err = logic.UpdateCards(db, bulkData)
logic.Check(err)
}
fmt.Println("Update finished.")
} else {
fmt.Println("No update required.")
}
storageBox := logic.GetResponse("Enter storage box label:")
source := logic.GetResponse("Enter source:")
searchOptions, err := logic.GetAllSearchOptions(db)
logic.Check(err)
for {
screen.Clear()
screen.MoveTopLeft()
fmt.Println("Storage location:", storageBox)
fmt.Println("Source:", source)
selectedCardPrintingId, selectedSearchOption, err := logic.Search(searchOptions)
logic.Check(err)
fmt.Println("Inserted card:", selectedSearchOption)
storageLocation := database.CardStorageLocation{
CardPrintingId: selectedCardPrintingId,
StorageBox: storageBox,
Source: source,
}
err = logic.StoreCard(db, storageLocation)
logic.Check(err)
nextAction := logic.GetResponse("[s]earch again/[r]epeat last insert/[q]uit:")
switch nextAction {
case "s":
continue
case "r":
err = logic.StoreCard(db, storageLocation)
logic.Check(err)
case "q":
break
}
}
}