! Copyright (C) 2006 Chris Double.
! See http://factorcode.org/license.txt for BSD license.
!
! Create a test database like follows:
!
! sqlite3 history.db
! > create table rss (url text, title text, link text, primary key (url));
! > create table entries (url text, link text, title text, description text, pubdate text, primary key(url, link));
! > [eof]
!
IN: rss
USING: kernel html cont-responder namespaces sequences io hashtables sqlite errors tuple-db ;
TUPLE: reader-feed url title link ;
TUPLE: reader-entry url link title description pubdate ;
reader-feed default-mapping set-mapping
reader-entry default-mapping set-mapping
SYMBOL: db
: init-db ( -- )
db get-global [ sqlite-close ] when*
"rss-reader.db" exists? [
"rss-reader.db" sqlite-open db set-global
] [
"rss-reader.db" sqlite-open dup db set-global
dup reader-feed create-tuple-table
reader-entry create-tuple-table
] if ;
: add-feed ( url -- )
"" ""
reader-entry-description write
"Feeds Updated." write
dup reader-entry-title write
all-urls [
] each
dup write
dup [ remove-feed ] curry "Remove" swap quot-href
[ display-entries ] curry "Database" swap quot-href
"Add Feed" [ ask-for-url add-feed ] quot-href
"Update Feeds" [ all-urls update-feeds ] quot-href
] show-final ; "maintain-feeds" [ init-db maintain-feeds ] install-cont-responder