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))))
|