diff options
author | Steve Manuel <nilslice@gmail.com> | 2017-03-15 12:49:03 -0700 |
---|---|---|
committer | Steve Manuel <nilslice@gmail.com> | 2017-03-15 12:49:03 -0700 |
commit | 8684ca00eedc5799ae954f8149d4beeeb8e236bf (patch) | |
tree | 70e4f4306502171e15ccf7aafd41fa9dfadf7b4d | |
parent | 4f90b228e1f145340ae4c9a6fc83b2a2cf0a86fa (diff) |
updating DeleteContent signature to remove requirement of url.Values, will instead to a lookup in content before the delete to get slug, etc
-rw-r--r-- | system/admin/handlers.go | 4 | ||||
-rw-r--r-- | system/db/content.go | 23 |
2 files changed, 20 insertions, 7 deletions
diff --git a/system/admin/handlers.go b/system/admin/handlers.go index 56efc0c..a585faa 100644 --- a/system/admin/handlers.go +++ b/system/admin/handlers.go @@ -1409,7 +1409,7 @@ func approveContentHandler(res http.ResponseWriter, req *http.Request) { } if pendingID != "" { - err = db.DeleteContent(req.FormValue("type")+":"+pendingID, req.Form) + err = db.DeleteContent(req.FormValue("type") + ":" + pendingID) if err != nil { log.Println("Failed to remove content after approval:", err) } @@ -1757,7 +1757,7 @@ func deleteHandler(res http.ResponseWriter, req *http.Request) { return } - err = db.DeleteContent(t+":"+id, req.Form) + err = db.DeleteContent(t + ":" + id) if err != nil { log.Println(err) res.WriteHeader(http.StatusInternalServerError) diff --git a/system/db/content.go b/system/db/content.go index dd93c60..8a91828 100644 --- a/system/db/content.go +++ b/system/db/content.go @@ -228,11 +228,25 @@ func insert(ns string, data url.Values) (int, error) { // DeleteContent removes an item from the database. Deleting a non-existent item // will return a nil error. -func DeleteContent(target string, data url.Values) error { +func DeleteContent(target string) error { t := strings.Split(target, ":") ns, id := t[0], t[1] - err := store.Update(func(tx *bolt.Tx) error { + b, err := Content(target) + if err != nil { + return err + } + + // get content slug to delete from __contentIndex if it exists + // this way content added later can use slugs even if previously + // deleted content had used one + var itm item.Item + err = json.Unmarshal(b, &itm) + if err != nil { + return err + } + + err = store.Update(func(tx *bolt.Tx) error { b := tx.Bucket([]byte(ns)) if b == nil { return bolt.ErrBucketNotFound @@ -244,14 +258,13 @@ func DeleteContent(target string, data url.Values) error { } // if content has a slug, also delete it from __contentIndex - slug := data.Get("slug") - if slug != "" { + if itm.Slug != "" { ci := tx.Bucket([]byte("__contentIndex")) if ci == nil { return bolt.ErrBucketNotFound } - err := ci.Delete([]byte(slug)) + err := ci.Delete([]byte(itm.Slug)) if err != nil { return err } |