diff of 0eb4eb277a6700647b024b2a2a25187b4b1863ab

0eb4eb277a6700647b024b2a2a25187b4b1863ab
diff --git a/resources/sql/media-fns.sql b/resources/sql/media-fns.sql
index d31bc10..796780a 100644
--- a/resources/sql/media-fns.sql
+++ b/resources/sql/media-fns.sql
@@ -1,6 +1,5 @@
 -- name: insert-media
--- returns: :array-hash
-insert into blog.media (name, data) values (:name, :data) returning id;
+insert into blog.media (name, data) values ($1, $2) returning id;
 
 -- name: get-media :? :1
 -- returns: :array-hash
diff --git a/src/media/media-db.lisp b/src/media/media-db.lisp
index 39c685d..4d1b844 100644
--- a/src/media/media-db.lisp
+++ b/src/media/media-db.lisp
@@ -3,7 +3,7 @@
   (:import-from :com.inuoe.jzon :parse)
   (:import-from :halisql :defqueries)
   (:import-from :lisp-fixup :fix-timestamp)
-  (:export))
+  (:export :list-pictures :insert-media))
 
 (in-package :murja.media.media-db)
 
diff --git a/src/routes/media-routes.lisp b/src/routes/media-routes.lisp
index c0c3d19..8b4ad44 100644
--- a/src/routes/media-routes.lisp
+++ b/src/routes/media-routes.lisp
@@ -1,8 +1,9 @@
 (defpackage murja.routes.media-routes
   (:use :cl)
+  (:import-from :lisp-fixup :slurp-bytes)
   (:import-from :com.inuoe.jzon :stringify)
   (:import-from :murja.middleware.db :@transaction)
-  (:import-from :murja.media.media-db :list-pictures)
+  (:import-from :murja.media.media-db :list-pictures :insert-media)
    
   (:import-from :murja.middleware.json :@json)
   (:import-from :murja.middleware.auth :@authenticated :@can? :*user*)
@@ -10,6 +11,22 @@
 
 (in-package :murja.routes.media-routes)
 
+(defroute post-pic ("/api/pictures" :method :post
+				    :decorators (@transaction
+						 @authenticated
+						 (@can? "create-post")))
+    (&post file)
+  (destructuring-bind (tmp-file filename mime) file
+    (let* ((bytes (slurp-bytes tmp-file))
+	   (result (insert-media filename bytes))
+	   (response (make-hash-table)))
+
+      (log:info "Inserting picture ~a of mime ~a" filename mime)
+      (when result
+	(setf (gethash "id" response)
+	      (caar result))
+	(stringify response)))))
+
 (defroute all-pics ("/api/pictures/list/all" :method :get
 					     :decorators (@transaction
 							  @authenticated