package main import ( "fmt" "os" "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:") storageLocation := database.CardStorageLocation{ StorageBox: storageBox, Source: source, } searchOptions, err := logic.GetAllSearchOptions(db) logic.Check(err) var selectedCardId int var selectedCardSearchOption string = "None" var lastOutput string for { screen.Clear() screen.MoveTopLeft() fmt.Println("Storage location:", storageBox, "|", "Source:", source) fmt.Println("Selected card:", selectedCardSearchOption, "ID:", selectedCardId) if lastOutput != "" { fmt.Println(lastOutput) } var action string action = logic.GetResponse("[s]earch for card/[i]nsert selected card/[q]uit:") switch action { case "s": selectedCardId, selectedCardSearchOption, err = logic.Search(searchOptions) logic.Check(err) storageLocation.CardPrintingId = selectedCardId lastOutput = "" continue case "i": if selectedCardId == 0 { lastOutput = "No selected card, please search for one." continue } err = logic.StoreCard(db, storageLocation) logic.Check(err) lastOutput = "Inserted card: " + selectedCardSearchOption break case "q": os.Exit(0) default: lastOutput = "Not a valid command: " + action break } } }