diff of 9da316f6c01722ba4f6d0be6f7b820f03e593464
9da316f6c01722ba4f6d0be6f7b820f03e593464
diff --git a/aggressive-murja.asd b/aggressive-murja.asd
index 424becd..1c5f099 100644
--- a/aggressive-murja.asd
+++ b/aggressive-murja.asd
@@ -34,10 +34,15 @@
:components
((:file "post-db")))
+ (:module "media"
+ :components
+ ((:file "media-db")))
+
(:module "routes"
:components
((:file "login-routes")
(:file "post-routes")
+ (:file "media-routes")
(:file "root-routes")))
(:file "main")))))
diff --git a/resources/sql/media-fns.sql b/resources/sql/media-fns.sql
new file mode 100644
index 0000000..d31bc10
--- /dev/null
+++ b/resources/sql/media-fns.sql
@@ -0,0 +1,19 @@
+-- name: insert-media
+-- returns: :array-hash
+insert into blog.media (name, data) values (:name, :data) returning id;
+
+-- name: get-media :? :1
+-- returns: :array-hash
+select name, data from blog.media where id = $1§::uuid ;
+
+-- name: list-pictures*
+-- returns: :array-hash
+select id, name from blog.media;
+
+-- name: delete-picture* :!
+-- returns: :array-hash
+delete from blog.media where id = $1§;
+
+-- name: select-referencing-posts* :?
+-- returns: :array-hash
+select * from blog.media_post_pairing where media_id = $1§;
diff --git a/src/media/media-db.lisp b/src/media/media-db.lisp
new file mode 100644
index 0000000..39c685d
--- /dev/null
+++ b/src/media/media-db.lisp
@@ -0,0 +1,14 @@
+(defpackage :murja.media.media-db
+ (:use :cl :postmodern)
+ (:import-from :com.inuoe.jzon :parse)
+ (:import-from :halisql :defqueries)
+ (:import-from :lisp-fixup :fix-timestamp)
+ (:export))
+
+(in-package :murja.media.media-db)
+
+(defqueries "media-fns")
+
+(defun list-pictures ()
+ (list-pictures*))
+
diff --git a/src/routes/media-routes.lisp b/src/routes/media-routes.lisp
new file mode 100644
index 0000000..c0c3d19
--- /dev/null
+++ b/src/routes/media-routes.lisp
@@ -0,0 +1,21 @@
+(defpackage murja.routes.media-routes
+ (:use :cl)
+ (:import-from :com.inuoe.jzon :stringify)
+ (:import-from :murja.middleware.db :@transaction)
+ (:import-from :murja.media.media-db :list-pictures)
+
+ (:import-from :murja.middleware.json :@json)
+ (:import-from :murja.middleware.auth :@authenticated :@can? :*user*)
+ (:import-from :easy-routes :defroute))
+
+(in-package :murja.routes.media-routes)
+
+(defroute all-pics ("/api/pictures/list/all" :method :get
+ :decorators (@transaction
+ @authenticated
+ (@can? "create-post"))) ()
+ (let ((pics (list-pictures)))
+ (if pics
+ (stringify pics)
+ "[]")))
+
diff --git a/src/routes/root-routes.lisp b/src/routes/root-routes.lisp
index e56533b..43a20ad 100644
--- a/src/routes/root-routes.lisp
+++ b/src/routes/root-routes.lisp
@@ -54,7 +54,7 @@
:decorators (@json)) ()
"{\"time-format\":\"dd.MM.yyyy HH:mm\",\"blog-title\":\"Murja.dev @ $HOSTNAME\",\"recent-post-count\":6,\"xss-filter-posts?\":false}")
-(defroute resources ("/resources/:file" :method :get) ()
+(defun get-resource (file)
(let ((path (gethash file *allowed-resources*)))
(if path
(let ((source (lisp-fixup:slurp-utf-8 path)))
@@ -63,13 +63,14 @@
(progn
(setf (hunchentoot:return-code*) 404)
""))))
+(defroute resources ("/resources/:file" :method :get) ()
+ (get-resource file))
-(defroute root ("/" :method :get) ()
- ;; (let ((css-file (asdf:system-relative-pathname halisql:*system-name*
- ;; "resources/css/murja.css"))
- ;; (js-file (asdf:system-relative-pathname halisql:*system-name*
- ;; "resources/js/murja.js")))
-"<!DOCTYPE html>
+;; (defroute resources ("/blog/resources/:file" :method :get) ()
+;; (get-resource file))
+
+(defvar *root*
+ "<!DOCTYPE html>
<html xmlns:of=\"http://ogp.me/ns#\"
xmlns:fb=\"http://www.facebook.com/2008/fbml\">
<head>
@@ -79,9 +80,15 @@
<script src=\"/resources/murja.js\"></script>
</head>
<body>
- <script src=\"resources/murja-helper.js\"></script>
+ <script src=\"/resources/murja-helper.js\"></script>
<div id=\"#app\" />
</body>
</html>")
+(defroute root ("/" :method :get) ()
+ *root*)
+
+(defroute mediamgr ("/blog/mediamanager" :method :get) ()
+ *root*)
+