|
@@ -1,7 +1,6 @@
|
|
|
package handlers
|
|
|
|
|
|
import (
|
|
|
- "encoding/json"
|
|
|
"fmt"
|
|
|
"io/ioutil"
|
|
|
"log"
|
|
@@ -201,6 +200,7 @@ func get(w http.ResponseWriter, r *http.Request, model string, pattern PathPatte
|
|
|
if err != nil {
|
|
|
respondWithError(w, r, err)
|
|
|
} else {
|
|
|
+ log.Println("AFTER REDIRECT:", r.URL)
|
|
|
data, err := getFn(mux.Vars(r))
|
|
|
if err != nil {
|
|
|
renderer.Render[format](w, r, err)
|
|
@@ -247,30 +247,59 @@ 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 delete(w http.ResponseWriter, r *http.Request, model string, pattern PathPattern) {
|
|
|
+ var (
|
|
|
+ data orm.IDer
|
|
|
+ err error
|
|
|
+ )
|
|
|
+
|
|
|
+ respFormat := renderer.GetContentFormat(r)
|
|
|
+
|
|
|
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)
|
|
|
+ data, err = postFn(mux.Vars(r), r)
|
|
|
if err != nil {
|
|
|
renderer.Render["html"](w, r, err)
|
|
|
+ } else if pattern.RedirectPattern != "" {
|
|
|
+ // if id := mux.Vars(r)["id"]; id != "" {
|
|
|
+ // modelId, _ := strconv.Atoi(id)
|
|
|
+ // http.Redirect(w, r, pattern.RedirectPath(model, uint(modelId)), http.StatusSeeOther)
|
|
|
+ // } else {
|
|
|
+ // http.Redirect(w, r, pattern.RedirectPath(model, data.GetID()), http.StatusSeeOther)
|
|
|
+ // }
|
|
|
+ log.Println("REDIRECT:", pattern.RedirectPath(model))
|
|
|
+ http.Redirect(w, r, pattern.RedirectPath(model), http.StatusSeeOther)
|
|
|
} 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)
|
|
|
+ renderer.Render[respFormat](w, r, data.GetID())
|
|
|
}
|
|
|
}
|
|
|
|
|
|
func modelHandler(model string, pattern PathPattern) http.Handler {
|
|
|
fn := func(w http.ResponseWriter, r *http.Request) {
|
|
|
switch r.Method {
|
|
|
-
|
|
|
case "GET":
|
|
|
+ log.Println("AFTER AFTER REDIRECT", model, pattern)
|
|
|
get(w, r, model, pattern)
|
|
|
|
|
|
case "POST":
|