Show timer, set time on create
This commit is contained in:
27
timer.go
27
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)
|
||||
|
Reference in New Issue
Block a user