From 8fe02f46d6e74c00334cb84be724bf8805941326 Mon Sep 17 00:00:00 2001 From: The Magician Date: Tue, 20 Aug 2024 12:57:36 +0100 Subject: [PATCH] Add storage areas to database --- sevenkeys/cli/mainui.go | 13 +++++++++++-- sevenkeys/database/storagearea.go | 25 +++++++++++++++++++++++++ sevenkeys/logic/storage.go | 11 +++++++++++ 3 files changed, 47 insertions(+), 2 deletions(-) create mode 100644 sevenkeys/database/storagearea.go diff --git a/sevenkeys/cli/mainui.go b/sevenkeys/cli/mainui.go index 3e85ce1..76fb9c0 100644 --- a/sevenkeys/cli/mainui.go +++ b/sevenkeys/cli/mainui.go @@ -5,6 +5,7 @@ import ( "errors" "fmt" "os/exec" + "sevenkeys/database" "sevenkeys/logic" ) @@ -28,16 +29,25 @@ func MainCliLoop(db *sql.DB) { command = GetStringResponse("SEVENKEYS $") + var err error + switch command { case "q", "quit": return + case "n", "newstorage": + var storageArea database.StorageArea + storageArea.Name = GetStringResponse("Storage area name:") + storageArea.Type = GetStringResponse("Storage area type (Binder/Box):") + err = logic.CreateStorageArea(db, storageArea) + logic.Check(err) + break case "l", "location": cardStorageLocation.StorageBox = GetStringResponse("Storage location:") break case "r", "source": cardStorageLocation.Source = GetStringResponse("Card source:") break - case "n", "condition": + case "p", "condition": cardStorageLocation.CardCondition = GetStringResponse("Card condition:") break case "c", "criteria": @@ -48,7 +58,6 @@ func MainCliLoop(db *sql.DB) { var previousCardPrintingId = cardStorageLocation.CardPrintingId - var err error cardStorageLocation.CardPrintingId, selectedCardPrintingSearchLine, err = logic.Search(searchOptions) var exitError *exec.ExitError if errors.As(err, &exitError) { diff --git a/sevenkeys/database/storagearea.go b/sevenkeys/database/storagearea.go new file mode 100644 index 0000000..9fb2b7a --- /dev/null +++ b/sevenkeys/database/storagearea.go @@ -0,0 +1,25 @@ +package database + +import "database/sql" + +type StorageArea struct { + Id int + Name string + Type string +} + +func InsertStorageArea(db *sql.DB, storageArea StorageArea) error { + query := `INSERT INTO StorageArea (Name, StorageType) VALUES (?, ?);` + + insert, err := db.Prepare(query) + if err != nil { + return err + } + + _, err = insert.Exec(storageArea.Name, storageArea.Type) + if err != nil { + return err + } + + return nil +} diff --git a/sevenkeys/logic/storage.go b/sevenkeys/logic/storage.go index 532d227..ed072d5 100644 --- a/sevenkeys/logic/storage.go +++ b/sevenkeys/logic/storage.go @@ -5,6 +5,17 @@ import ( "sevenkeys/database" ) +func CreateStorageArea(db *sql.DB, storageArea database.StorageArea) error { + // TODO: Check if there's already a storage are with the same name + // TODO: Check if the type entered is valid + err := database.InsertStorageArea(db, storageArea) + if err != nil { + return err + } + + return nil +} + func StoreCard(db *sql.DB, storageLocation database.CardStorageLocation) error { lastPosition, err := database.GetLastPositionInBox(db, storageLocation.StorageBox) if err != nil {