From f685b4a2489d7ed63907365f5a5a20891504838a Mon Sep 17 00:00:00 2001 From: Peter Rounce Date: Sun, 20 Nov 2022 13:02:06 +0000 Subject: [PATCH] check for unique card_name - fixes #17 --- createboltcard/database.go | 21 +++++++++++++++++++++ createboltcard/main.go | 15 ++++++++++++++- 2 files changed, 35 insertions(+), 1 deletion(-) diff --git a/createboltcard/database.go b/createboltcard/database.go index ab4d472..29d4d7b 100644 --- a/createboltcard/database.go +++ b/createboltcard/database.go @@ -46,6 +46,27 @@ func db_delete_expired() error { return nil } +func db_get_card_name_count(card_name string) (card_count int, err error) { + + card_count = 0 + + db, err := db_open() + if err != nil { + return 0, err + } + defer db.Close() + + sqlStatement := `SELECT COUNT(card_id) FROM cards WHERE card_name = $1;` + + row := db.QueryRow(sqlStatement, card_name) + err = row.Scan(&card_count) + if err != nil { + return 0, err + } + + return card_count, nil +} + func db_insert_card(one_time_code string, k0_auth_key string, k2_cmac_key string, k3 string, k4 string, tx_max_sats int, day_max_sats int, lnurlw_enable bool, card_name string) error { diff --git a/createboltcard/main.go b/createboltcard/main.go index f502afe..cf0bd15 100644 --- a/createboltcard/main.go +++ b/createboltcard/main.go @@ -36,6 +36,19 @@ func main() { return } + // check if card_name already exists + + card_count, err := db_get_card_name_count(*card_name_ptr) + if err != nil { + log.Warn(err.Error()) + return + } + + if card_count > 0 { + fmt.Println("the card name already exists in the database") + return + } + // create the keys one_time_code := random_hex() @@ -46,7 +59,7 @@ func main() { // create the new card record - err := db_insert_card(one_time_code, k0_auth_key, k2_cmac_key, k3, k4, + err = db_insert_card(one_time_code, k0_auth_key, k2_cmac_key, k3, k4, *tx_max_ptr, *day_max_ptr, *enable_flag_ptr, *card_name_ptr) if err != nil { log.Warn(err.Error())