summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSteve Manuel <nilslice@gmail.com>2016-10-13 12:45:33 -0700
committerSteve Manuel <nilslice@gmail.com>2016-10-13 12:45:33 -0700
commit8d569ebc74b932fab0e1a725febddf92d43d2892 (patch)
treec5067e7fb74dbb9317ab4e12748b28044a9945e2
parent4dceec07d9f34018f70b15f795e4af27ff753dc3 (diff)
adding admin server handler for deleting content
-rw-r--r--system/admin/handlers.go25
-rw-r--r--system/admin/server.go1
-rw-r--r--system/db/content.go18
3 files changed, 44 insertions, 0 deletions
diff --git a/system/admin/handlers.go b/system/admin/handlers.go
index 2be8d8e..f7c3cca 100644
--- a/system/admin/handlers.go
+++ b/system/admin/handlers.go
@@ -513,6 +513,31 @@ func editHandler(res http.ResponseWriter, req *http.Request) {
}
}
+func deleteHandler(res http.ResponseWriter, req *http.Request) {
+ if req.Method != http.MethodPost {
+ res.WriteHeader(http.StatusMethodNotAllowed)
+ return
+ }
+
+ q := req.URL.Query()
+ id := q.Get("id")
+ t := q.Get("type")
+
+ if id == "" || t == "" {
+ res.WriteHeader(http.StatusBadRequest)
+ return
+ }
+
+ err := db.DeleteContent(t + ":" + i)
+ if err != nil {
+ res.WriteHeader(http.StatusInternalServerError)
+ return
+ }
+
+ redir := strings.TrimSuffix(req.URL.Scheme+req.URL.Host+req.URL.Path, "/delete")
+ http.Redirect(res, req, redir, http.StatusFound)
+}
+
func editUploadHandler(res http.ResponseWriter, req *http.Request) {
if req.Method != http.MethodPost {
res.WriteHeader(http.StatusMethodNotAllowed)
diff --git a/system/admin/server.go b/system/admin/server.go
index 6f4a96e..b3b128d 100644
--- a/system/admin/server.go
+++ b/system/admin/server.go
@@ -25,6 +25,7 @@ func Run() {
http.HandleFunc("/admin/posts/search", user.Auth(searchHandler))
http.HandleFunc("/admin/edit", user.Auth(editHandler))
+ http.HandleFunc("/admin/edit/delete", user.Auth(deleteHandler))
http.HandleFunc("/admin/edit/upload", user.Auth(editUploadHandler))
pwd, err := os.Getwd()
diff --git a/system/db/content.go b/system/db/content.go
index d637085..1e5b95a 100644
--- a/system/db/content.go
+++ b/system/db/content.go
@@ -137,6 +137,24 @@ func postToJSON(ns string, data url.Values) ([]byte, error) {
return j, nil
}
+// DeleteContent removes an item from the database. Deleting a non-existent item
+// will return a nil error.
+func DeleteContent(target string) error {
+ t := strings.Split(target, ":")
+ ns, id := t[0], t[1]
+
+ err := store.Update(func(tx *bolt.Tx) error {
+ tx.Bucket([]byte(ns)).Delete([]byte(id))
+ return nil
+ })
+
+ if err != nil {
+ return err
+ }
+
+ return nil
+}
+
// Content retrives one item from the database. Non-existent values will return an empty []byte
// The `target` argument is a string made up of namespace:id (string:int)
func Content(target string) ([]byte, error) {