Browse code
Updating dependencies, new DB access model
fiddlerwoaroof authored on 23/05/2016 23:44:21
Showing 2 changed files
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 |
|