summaryrefslogtreecommitdiff
path: root/timer.go
diff options
context:
space:
mode:
Diffstat (limited to 'timer.go')
-rw-r--r--timer.go27
1 files changed, 22 insertions, 5 deletions
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)