git.fiddlerwoaroof.com
Browse code

Updating dependencies, new DB access model

fiddlerwoaroof authored on 23/05/2016 23:44:21
Showing 2 changed files
1 1
new file mode 100644
... ...
@@ -0,0 +1,51 @@
1
+(in-package :whitespace)
2
+
3
+(defstruct (rss-item-store-vector (:type vector))
4
+  id title link description comments enclosure guid pub-date source feed)
5
+
6
+(defstruct (rss-feed-store-vector (:type vector))
7
+  id title link description fetch-url)
8
+
9
+(defmacro select-rfs ((&rest select-clauses) (&rest where-clauses))
10
+  `(:select ,@(or (list :*) select-clauses)
11
+    :from 'rss_feed_store
12
+    ,@(when where-clauses
13
+        `(:where ,@where-clauses))))
14
+
15
+(wc (postmodern:query (select-rfs () ())))
16
+
17
+(defun get-rss-feed-by-id (id)
18
+  (apply #'make-rss-feed-store-vector 
19
+         (postmodern:query (:select :* :from 'rss-feed-store
20
+                            :where (:= :id id))
21
+                           :plist)))
22
+
23
+(defun get-rss-feeds ()
24
+  (mapcar (lambda (it) (apply #'make-rss-feed-store-vector it))
25
+          (postmodern:query (:select :* :from 'rss-feed-store)
26
+                            :plists)))
27
+
28
+(defun get-rss-feed-by-title (title)
29
+  (mapcar (lambda (it) (apply #'make-rss-feed-store-vector it))
30
+          (postmodern:query (:select :* :from 'rss-feed-store
31
+                             :where (:= :title title))
32
+                            :plists)))
33
+
34
+(defun get-fetch-urls ()
35
+  (mapcar (lambda (it) (apply #'make-rss-feed-store-vector it))
36
+          (postmodern:query (:select :fetch-url :from 'rss-feed-store)
37
+                            :plists)))
38
+
39
+(defun get-rss-items ()
40
+  (mapcar (lambda (it) (apply #'make-rss-item-store-vector it))
41
+          (postmodern:query (:select :* :from 'rss-item-store)
42
+                            :plists)))
43
+
44
+(defgeneric get-items-for-feed (feed)
45
+  (:method ((feed vector))
46
+    (get-items-for-feed (rss-feed-store-vector-id feed)))
47
+  (:method ((feed integer))
48
+    (mapcar (lambda (it) (apply #'make-rss-item-store-vector it))
49
+            (postmodern:query (:select :* :from 'rss-item-store
50
+                               :where (:= :feed feed))
51
+                              :plists))))
... ...
@@ -3,7 +3,8 @@
3 3
 
4 4
 (ql:quickload '(:fwoar.lisputils :araneus :cl-markup :colors :lquery :plump :postmodern
5 5
                 :sxql :clack-middleware-postmodern :dexador :spinneret :ubiquitous :iterate
6
-                :jonathan :cl-actors :simple-tasks :cl-oid-connect :fwoar.lisputils))
6
+                :jonathan :cl-actors :simple-tasks :cl-oid-connect :fwoar.lisputils
7
+                :serapeum))
7 8
 
8 9
 (declaim (optimize (speed 0) (safety 3) (debug 2)))
9 10