git.fiddlerwoaroof.com
db-access-functions.lisp
cccada9e
 (in-package :whitespace)
 
 (defstruct (rss-item-store-vector (:type vector))
   id title link description comments enclosure guid pub-date source feed)
 
 (defstruct (rss-feed-store-vector (:type vector))
   id title link description fetch-url)
 
 (defmacro select-rfs ((&rest select-clauses) (&rest where-clauses))
   `(:select ,@(or (list :*) select-clauses)
     :from 'rss_feed_store
     ,@(when where-clauses
         `(:where ,@where-clauses))))
 
 (wc (postmodern:query (select-rfs () ())))
 
 (defun get-rss-feed-by-id (id)
   (apply #'make-rss-feed-store-vector 
          (postmodern:query (:select :* :from 'rss-feed-store
                             :where (:= :id id))
                            :plist)))
 
 (defun get-rss-feeds ()
   (mapcar (lambda (it) (apply #'make-rss-feed-store-vector it))
           (postmodern:query (:select :* :from 'rss-feed-store)
                             :plists)))
 
 (defun get-rss-feed-by-title (title)
   (mapcar (lambda (it) (apply #'make-rss-feed-store-vector it))
           (postmodern:query (:select :* :from 'rss-feed-store
                              :where (:= :title title))
                             :plists)))
 
 (defun get-fetch-urls ()
   (mapcar (lambda (it) (apply #'make-rss-feed-store-vector it))
           (postmodern:query (:select :fetch-url :from 'rss-feed-store)
                             :plists)))
 
 (defun get-rss-items ()
   (mapcar (lambda (it) (apply #'make-rss-item-store-vector it))
           (postmodern:query (:select :* :from 'rss-item-store)
                             :plists)))
 
 (defgeneric get-items-for-feed (feed)
   (:method ((feed vector))
     (get-items-for-feed (rss-feed-store-vector-id feed)))
   (:method ((feed integer))
     (mapcar (lambda (it) (apply #'make-rss-item-store-vector it))
             (postmodern:query (:select :* :from 'rss-item-store
                                :where (:= :feed feed))
                               :plists))))