cashless2ecash

cashless2ecash: pay with cards for digital cash (experimental)
Log | Files | Refs | README

commit 18c53dc8bc5f6f9498e7997b940a1f95625e14fc
parent aacaaf2f49f2901e23bb2bfae03ac3fcad146bbf
Author: Joel-Haeberli <haebu@rubigen.ch>
Date:   Wed,  8 May 2024 15:08:22 +0200

cli: integrate terminal activation

Diffstat:
Mcli/cli.go | 32++++++++++++++++++++++++++++++++
Mcli/db.go | 1+
2 files changed, 33 insertions(+), 0 deletions(-)

diff --git a/cli/cli.go b/cli/cli.go @@ -21,6 +21,7 @@ const ACTION_SETUP_SIMULATION = "sim" const ACTION_REGISTER_PROVIDER = "rp" const ACTION_REGISTER_TERMINAL = "rt" const ACTION_DEACTIVATE_TERMINAL = "dt" +const ACTION_ACTIVATE_TERMINAL = "at" const ACTION_CONNECT_DB = "db" const ACTION_QUIT = "q" @@ -205,6 +206,35 @@ func deactivateTerminal() error { return nil } +func activateTerminal() error { + + if DB == nil { + return errors.New("connect to the database first (cmd: db)") + } + + fmt.Println("You are about to activate a terminal which allows withdrawals. This will make the terminal operational.") + tuid := read("Terminal-User-Id: ") + parts := strings.Split(tuid, "-") + if len(parts) != 2 { + return errors.New("invalid terminal-user-id (format=[PROVIDER_NAME]-[NUMBER])") + } + tid, err := strconv.Atoi(parts[1]) + if err != nil { + return err + } + + _, err = DB.Exec( + context.Background(), + ACTIVATE_TERMINAL, + tid, + ) + if err != nil { + return err + } + + return nil +} + func setupSimulation() error { if DB == nil { @@ -394,6 +424,8 @@ func dispatchCommand(cmd string) error { err = registerWalleeTerminal() case ACTION_DEACTIVATE_TERMINAL: err = deactivateTerminal() + case ACTION_ACTIVATE_TERMINAL: + err = activateTerminal() case ACTION_SETUP_SIMULATION: err = setupSimulation() default: diff --git a/cli/db.go b/cli/db.go @@ -3,6 +3,7 @@ package main const INSERT_PROVIDER = "INSERT INTO c2ec.provider (name, payto_target_type, backend_base_url, backend_credentials) VALUES ($1,$2,$3,$4)" const INSERT_TERMINAL = "INSERT INTO c2ec.terminal (access_token, description, provider_id) VALUES ($1,$2,$3)" const DEACTIVATE_TERMINAL = "UPDATE c2ec.terminal SET active = false WHERE terminal_id=$1" +const ACTIVATE_TERMINAL = "UPDATE c2ec.terminal SET active = true WHERE terminal_id=$1" const GET_PROVIDER_BY_NAME = "SELECT * FROM c2ec.provider WHERE name=$1" const GET_LAST_INSERTED_TERMINAL = "SELECT * FROM c2ec.terminal WHERE terminal_id = (SELECT MAX(terminal_id) FROM c2ec.terminal)"