Wire up removing cards to UI
This commit is contained in:
parent
1e967674b6
commit
e860e529f1
|
@ -26,7 +26,7 @@ func MainCliLoop(db *sql.DB) {
|
|||
}
|
||||
var insertSearchOptions logic.InsertSearchOptions
|
||||
|
||||
// TODO: Make these do something and add the ability to modify them
|
||||
// TODO: Add the ability to modify this
|
||||
var locateSearchCriteria logic.SearchCriteria = logic.SearchCriteria{
|
||||
SetCode: "",
|
||||
Foil: logic.Either,
|
||||
|
@ -96,11 +96,30 @@ func MainCliLoop(db *sql.DB) {
|
|||
locations, err := logic.LocateCards(db, cardNames, locateSearchCriteria)
|
||||
logic.Check(err)
|
||||
|
||||
for _, location := range locations {
|
||||
fmt.Println(location)
|
||||
}
|
||||
if len(locations) == 0 {
|
||||
fmt.Println("No results found")
|
||||
fmt.Scanln()
|
||||
break
|
||||
}
|
||||
|
||||
for _, location := range locations {
|
||||
description := logic.GetLocationDescription(location)
|
||||
fmt.Println(description)
|
||||
|
||||
for true {
|
||||
todo := GetStringResponse("TODO:")
|
||||
|
||||
if todo == "r" {
|
||||
logic.RemoveFromStorage(db, location)
|
||||
} else if todo == "n" {
|
||||
continue
|
||||
} else {
|
||||
fmt.Printf("Unrecognized option: %s\n", todo)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fmt.Scanln()
|
||||
break
|
||||
default:
|
||||
fmt.Println("Unrecognized command:", command)
|
||||
|
|
|
@ -7,12 +7,14 @@ import (
|
|||
)
|
||||
|
||||
type LocateCardResult struct {
|
||||
CardLocationId int
|
||||
CardName string
|
||||
SetCode string
|
||||
IsFoil bool
|
||||
IsPromo bool
|
||||
CollectorNumber string
|
||||
Language string
|
||||
StorageAreaId int
|
||||
StorageAreaType string
|
||||
StorageAreaName string
|
||||
Position int
|
||||
|
@ -21,7 +23,21 @@ type LocateCardResult struct {
|
|||
func GetLocateResults(db *sql.DB, cardNames []string) ([]LocateCardResult, error) {
|
||||
var results []LocateCardResult
|
||||
|
||||
query := "SELECT CardPrinting.Name, CardPrinting.SetCode, CardPrinting.IsFoil, CardPrinting.IsPromo, CardPrinting.CollectorNumber, CardPrinting.Language, StorageArea.StorageType, StorageArea.Name, CardLocation.Position FROM CardLocation JOIN CardPrinting ON CardLocation.CardPrintingId = CardPrinting.Id JOIN StorageArea ON CardLocation.StorageAreaId = StorageArea.Id WHERE CardPrinting.Name IN (?);"
|
||||
query := `SELECT CardLocation.Id,
|
||||
CardPrinting.Name,
|
||||
CardPrinting.SetCode,
|
||||
CardPrinting.IsFoil,
|
||||
CardPrinting.IsPromo,
|
||||
CardPrinting.CollectorNumber,
|
||||
CardPrinting.Language,
|
||||
StorageArea.Id,
|
||||
StorageArea.StorageType,
|
||||
StorageArea.Name,
|
||||
CardLocation.Position
|
||||
FROM CardLocation
|
||||
JOIN CardPrinting ON CardLocation.CardPrintingId = CardPrinting.Id
|
||||
JOIN StorageArea ON CardLocation.StorageAreaId = StorageArea.Id
|
||||
WHERE CardPrinting.Name IN (?);`
|
||||
query, args, err := sqlx.In(query, cardNames)
|
||||
if err != nil {
|
||||
return results, err
|
||||
|
@ -35,7 +51,7 @@ func GetLocateResults(db *sql.DB, cardNames []string) ([]LocateCardResult, error
|
|||
|
||||
var result LocateCardResult
|
||||
for rows.Next() {
|
||||
err := rows.Scan(&result.CardName, &result.SetCode, &result.IsFoil, &result.IsPromo, &result.CollectorNumber, &result.Language, &result.StorageAreaType, &result.StorageAreaName, &result.Position)
|
||||
err := rows.Scan(&result.CardLocationId, &result.CardName, &result.SetCode, &result.IsFoil, &result.IsPromo, &result.CollectorNumber, &result.Language, &result.StorageAreaId, &result.StorageAreaType, &result.StorageAreaName, &result.Position)
|
||||
if err != nil {
|
||||
return results, err
|
||||
}
|
||||
|
|
|
@ -2,7 +2,7 @@ package database
|
|||
|
||||
import "database/sql"
|
||||
|
||||
func RemoveFromBinder(db *sql.DB, location CardLocation) error {
|
||||
func RemoveFromBinder(db *sql.DB, location LocateCardResult) error {
|
||||
query := `UPDATE CardStorageLocation SET CardPrintingId = NULL WHERE Id = ?;`
|
||||
|
||||
update, err := db.Prepare(query)
|
||||
|
@ -11,7 +11,7 @@ func RemoveFromBinder(db *sql.DB, location CardLocation) error {
|
|||
return err
|
||||
}
|
||||
|
||||
_, err = update.Exec(location.Id)
|
||||
_, err = update.Exec(location.CardLocationId)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
@ -19,7 +19,7 @@ func RemoveFromBinder(db *sql.DB, location CardLocation) error {
|
|||
return nil
|
||||
}
|
||||
|
||||
func RemoveFromBox(db *sql.DB, location CardLocation) error {
|
||||
func RemoveFromBox(db *sql.DB, location LocateCardResult) error {
|
||||
deleteQuery := `DELETE FROM CardStorageLocation WHERE Id = ?;`
|
||||
|
||||
del, err := db.Prepare(deleteQuery)
|
||||
|
@ -28,12 +28,12 @@ func RemoveFromBox(db *sql.DB, location CardLocation) error {
|
|||
return err
|
||||
}
|
||||
|
||||
_, err = del.Exec(location.Id)
|
||||
_, err = del.Exec(location.CardLocationId)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
updateQuery := `UPDATE CardStorageLocation SET Position = Position - 1 WHERE Position > 5;`
|
||||
updateQuery := `UPDATE CardStorageLocation SET Position = Position - 1 WHERE Position > ? AND StorageAreaId = ?;`
|
||||
|
||||
update, err := db.Prepare(updateQuery)
|
||||
defer update.Close()
|
||||
|
@ -41,7 +41,7 @@ func RemoveFromBox(db *sql.DB, location CardLocation) error {
|
|||
return err
|
||||
}
|
||||
|
||||
_, err = update.Exec(location.Id)
|
||||
_, err = update.Exec(location.Position, location.StorageAreaId)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
|
|
@ -27,15 +27,14 @@ func GetBinderLocationDescription(position int) string {
|
|||
return fmt.Sprintf(" on page %d in %s slot %d", page, frontOrBack, slot)
|
||||
}
|
||||
|
||||
func LocateCards(db *sql.DB, cardNames []string, criteria SearchCriteria) ([]string, error) {
|
||||
var locations []string
|
||||
|
||||
func LocateCards(db *sql.DB, cardNames []string, criteria SearchCriteria) ([]database.LocateCardResult, error) {
|
||||
results, err := database.GetLocateResults(db, cardNames)
|
||||
if err != nil {
|
||||
return locations, err
|
||||
return results, err
|
||||
}
|
||||
|
||||
var location string
|
||||
var filteredResults []database.LocateCardResult
|
||||
|
||||
for _, result := range results {
|
||||
printing := database.CardPrinting{
|
||||
SetCode: result.SetCode,
|
||||
|
@ -49,31 +48,37 @@ func LocateCards(db *sql.DB, cardNames []string, criteria SearchCriteria) ([]str
|
|||
continue
|
||||
}
|
||||
|
||||
location = fmt.Sprintf("%s (%s %s) [%s]",
|
||||
result.CardName,
|
||||
result.SetCode,
|
||||
result.CollectorNumber,
|
||||
result.Language)
|
||||
|
||||
if result.IsFoil {
|
||||
location += " FOIL"
|
||||
}
|
||||
if result.IsPromo {
|
||||
location += " PROMO"
|
||||
filteredResults = append(filteredResults, result)
|
||||
}
|
||||
|
||||
location += fmt.Sprintf(" in %s \"%s\"",
|
||||
result.StorageAreaType,
|
||||
result.StorageAreaName)
|
||||
|
||||
if result.StorageAreaType == "Binder" {
|
||||
location += GetBinderLocationDescription(result.Position)
|
||||
} else if result.StorageAreaType == "Box" {
|
||||
location += fmt.Sprintf(" at position %d", result.Position)
|
||||
return filteredResults, nil
|
||||
}
|
||||
|
||||
locations = append(locations, location)
|
||||
func GetLocationDescription(location database.LocateCardResult) string {
|
||||
var description string
|
||||
|
||||
description = fmt.Sprintf("%s (%s %s) [%s]",
|
||||
location.CardName,
|
||||
location.SetCode,
|
||||
location.CollectorNumber,
|
||||
location.Language)
|
||||
|
||||
if location.IsFoil {
|
||||
description += " FOIL"
|
||||
}
|
||||
if location.IsPromo {
|
||||
description += " PROMO"
|
||||
}
|
||||
|
||||
return locations, nil
|
||||
description += fmt.Sprintf(" in %s \"%s\"",
|
||||
location.StorageAreaType,
|
||||
location.StorageAreaName)
|
||||
|
||||
if location.StorageAreaType == "Binder" {
|
||||
description += GetBinderLocationDescription(location.Position)
|
||||
} else if location.StorageAreaType == "Box" {
|
||||
description += fmt.Sprintf(" at position %d", location.Position)
|
||||
}
|
||||
|
||||
return description
|
||||
}
|
||||
|
|
|
@ -9,8 +9,8 @@ import (
|
|||
|
||||
var UnrecognizedStorageAreaTypeError error = errors.New("Unrecognized storage area type.")
|
||||
|
||||
func RemoveFromStorage(db *sql.DB, location database.CardLocation) error {
|
||||
locationType, err := database.GetStorageAreaTypeById(db, location.Id)
|
||||
func RemoveFromStorage(db *sql.DB, location database.LocateCardResult) error {
|
||||
locationType, err := database.GetStorageAreaTypeById(db, location.CardLocationId)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue