From c3b66fc95102b36bf21eacdc960183216683c270 Mon Sep 17 00:00:00 2001 From: Steven Le Rouzic Date: Sat, 13 Apr 2024 23:48:00 +0200 Subject: Show timer, set time on create --- timer.go | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) (limited to 'timer.go') diff --git a/timer.go b/timer.go index d5e0a67..324f846 100644 --- a/timer.go +++ b/timer.go @@ -6,6 +6,8 @@ import ( "database/sql" "context" "strings" + "time" + "strconv" _ "github.com/mattn/go-sqlite3" @@ -13,11 +15,12 @@ import ( "stevenlr.com/timer/model" ) -func insertTimer(tx *sql.Tx, name string) error { +func insertTimer(tx *sql.Tx, name string, seconds int) error { now := model.MakeTimeNow() + end := model.Time(time.Time(now).Add(time.Duration(seconds) * time.Second)) id := model.MakeUUID() _, err := tx.Exec(` - INSERT INTO Timer VALUES ($1, $2, $3, $4)`, id, name, now, now); + INSERT INTO Timer VALUES ($1, $2, $3, $4)`, id, name, now, end); return err } @@ -37,10 +40,10 @@ func initializeDatabase(db *sql.DB) error { `) if err != nil { return err } - err = insertTimer(tx, "My timer") + err = insertTimer(tx, "My timer", 600) if err != nil { return err } - err = insertTimer(tx, "My timer2") + err = insertTimer(tx, "My timer2", 600) if err != nil { return err } return tx.Commit() @@ -123,6 +126,20 @@ func (server *MyServer) handleDeleteTimer(w http.ResponseWriter, r *http.Request func (server* MyServer) handlePutTimer(w http.ResponseWriter, r *http.Request) { timerName := strings.TrimSpace(r.FormValue("timerName")) + days, err := strconv.ParseInt(strings.TrimSpace(r.FormValue("days")), 10, 32) + if err != nil { + w.WriteHeader(http.StatusBadRequest) + view.TimerCreateForm(timerName, "Error parsing days").Render(context.Background(), w) + return + } + + hours, err := strconv.ParseInt(strings.TrimSpace(r.FormValue("hours")), 10, 32) + if err != nil { + w.WriteHeader(http.StatusBadRequest) + view.TimerCreateForm(timerName, "Error parsing hours").Render(context.Background(), w) + return + } + tx, err := server.db.Begin() if err != nil { w.WriteHeader(http.StatusInternalServerError) @@ -137,7 +154,7 @@ func (server* MyServer) handlePutTimer(w http.ResponseWriter, r *http.Request) { return } - err = insertTimer(tx, timerName) + err = insertTimer(tx, timerName, int(((max(days, 0) * 24) + max(hours, 0)) * 3600)) if err != nil { w.WriteHeader(http.StatusInternalServerError) view.TimerCreateForm(timerName, "Internal server error").Render(context.Background(), w) -- cgit