diff --git a/src/blarg/models/files.clj b/src/blarg/models/files.clj index ebe64fd..302a4e0 100644 --- a/src/blarg/models/files.clj +++ b/src/blarg/models/files.clj @@ -63,3 +63,8 @@ (if-let [updated-doc (couch/update-document (-> doc (assoc :last_modified_at (get-timestamp))))] (couch/put-attachment updated-doc file :filename filename :mime-type content-type)))))) + +(defn delete-file [id] + (couch/with-db files + (if-let [doc (couch/get-document id)] + (couch/delete-document doc)))) diff --git a/src/blarg/routes/files.clj b/src/blarg/routes/files.clj index 72de946..695a9ae 100644 --- a/src/blarg/routes/files.clj +++ b/src/blarg/routes/files.clj @@ -28,6 +28,12 @@ (resp/redirect (str "/listfiles" p)) (throw (Exception. "Error uploading file"))))) +(defn handle-delete-file [file] + (let [id (ensure-prefix file "/")] + (if-let [deleted (files/delete-file file)] + (resp/redirect "/listfiles") + (throw (Exception. "Error deleting file"))))) + (defn get-file [path] (if-let [file (files/get-file path)] (resp/content-type (:content_type file) (:data file)) @@ -37,4 +43,5 @@ (restricted GET "/listfiles" [] (list-files "/")) (restricted GET "/listfiles/*" [*] (list-files *)) (restricted POST "/uploadfile" [path file] (handle-new-file path file)) + (restricted POST "/deletefile" [file] (handle-delete-file file)) (GET "/files/*" [*] (get-file *)))