|
@@ -1,6 +1,7 @@
|
|
|
package handlers
|
|
|
|
|
|
import (
|
|
|
+ "encoding/json"
|
|
|
"fmt"
|
|
|
"io/ioutil"
|
|
|
"log"
|
|
@@ -210,6 +211,7 @@ func post(w http.ResponseWriter, r *http.Request, model string, pattern PathPatt
|
|
|
} else if pattern.RedirectPattern != "" {
|
|
|
if id := mux.Vars(r)["id"]; id != "" {
|
|
|
modelId, _ := strconv.Atoi(id)
|
|
|
+ log.Println(model, modelId, pattern)
|
|
|
http.Redirect(w, r, pattern.RedirectPath(model, uint(modelId)), http.StatusSeeOther)
|
|
|
} else {
|
|
|
http.Redirect(w, r, pattern.RedirectPath(model, data.GetID()), http.StatusSeeOther)
|
|
@@ -222,13 +224,27 @@ func post(w http.ResponseWriter, r *http.Request, model string, pattern PathPatt
|
|
|
|
|
|
}
|
|
|
|
|
|
+func delete(w http.ResponseWriter, r *http.Request, model string, pattern PathPattern) {
|
|
|
+ postFn, ok := orm.Post[pattern.Path(model)]
|
|
|
+ if !ok {
|
|
|
+ renderer.Render[r.URL.Query().Get("format")](w, r, fmt.Errorf("Can't find ORM function for path %s!", pattern.PathPattern))
|
|
|
+ }
|
|
|
+ _, err := postFn(mux.Vars(r), r)
|
|
|
+ if err != nil {
|
|
|
+ renderer.Render["html"](w, r, err)
|
|
|
+ } else {
|
|
|
+ var data struct {
|
|
|
+ RedirectUrl string `json:"redirect_url"`
|
|
|
+ }
|
|
|
+ data.RedirectUrl = pattern.RedirectPath(model)
|
|
|
+
|
|
|
+ w.Header().Set("Content-Type", "application/json")
|
|
|
+ json.NewEncoder(w).Encode(data)
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
func modelHandler(model string, pattern PathPattern) http.Handler {
|
|
|
fn := func(w http.ResponseWriter, r *http.Request) {
|
|
|
- var (
|
|
|
- // ok bool
|
|
|
- // postFn orm.PostFn
|
|
|
- )
|
|
|
-
|
|
|
switch r.Method {
|
|
|
|
|
|
case "GET":
|
|
@@ -238,24 +254,7 @@ func modelHandler(model string, pattern PathPattern) http.Handler {
|
|
|
post(w, r, model, pattern)
|
|
|
|
|
|
case "DELETE":
|
|
|
- post(w, r, model, pattern)
|
|
|
- // postFn, ok = orm.Post[pattern.Path(model)]
|
|
|
- // if !ok {
|
|
|
- // renderer.Render[r.URL.Query().Get("format")](w, r, fmt.Errorf("Can't find ORM function for path %s!", pattern.PathPattern))
|
|
|
- // }
|
|
|
- // _, err := postFn(mux.Vars(r), r)
|
|
|
- // if err != nil {
|
|
|
- // renderer.Render["html"](w, r, err)
|
|
|
- // } else {
|
|
|
- // var data struct {
|
|
|
- // RedirectUrl string `json:"redirect_url"`
|
|
|
- // }
|
|
|
- // data.RedirectUrl = pattern.RedirectPath(model)
|
|
|
-
|
|
|
- // w.Header().Set("Content-Type", "application/json")
|
|
|
- // json.NewEncoder(w).Encode(data)
|
|
|
- // }
|
|
|
-
|
|
|
+ delete(w, r, model, pattern)
|
|
|
}
|
|
|
}
|
|
|
|