diff options
Diffstat (limited to 'examples/basic.go')
-rw-r--r-- | examples/basic.go | 35 |
1 files changed, 29 insertions, 6 deletions
diff --git a/examples/basic.go b/examples/basic.go index 467460f..2515c52 100644 --- a/examples/basic.go +++ b/examples/basic.go @@ -3,15 +3,38 @@ package examples import ( "log/slog" "net/http" + "strconv" ) // Big bungus function here! // -//hh:route GET /admin/users, query: query, nextURL: hh.Cookie(r, "logout_next_url") -func adminUsersForm(query struct { - search, year string - offset int -}, w http.ResponseWriter) { +//hh:route GET /admin/users +func adminUsersForm(w http.ResponseWriter, r struct { + r *http.Request + search, year string `hh:"form"` + offset int `hh:"form,optional"` + nextURL string `hh:"cookie,logout_next_url"` +}) { _, _ = w.Write([]byte("ahahaha")) - slog.Info("get admin users form", "search", query.search, "offset", query.offset) + slog.Info("get admin users form", "search", r.search, "offset", r.offset, "next-url", r.nextURL) +} + +func hh_adminUsersForm[S any](s S, w http.ResponseWriter, r *http.Request) { + search := r.FormValue("search") + + year := r.FormValue("year") + + offset0 := r.FormValue("offset") + offset, err := strconv.Atoi(offset0) + if err != nil { + w.WriteHeader(http.StatusBadRequest) + w.Write([]byte(`Bad request. Invalid integer 'offset' in form/query`)) + } + + adminUsersForm(w, struct { + r *http.Request + search, year string `hh:"form"` + offset int `hh:"form,optional"` + nextURL string `hh:"cookie,logout_next_url"` + }{r: r, search: search, year: year, offset: offset}) } |