(module zzcnfg racket (require (planet ryanc/db:1:1)) (define cn (sqlite3-connect #:database "data.db")) (define xsecitm "

~a

~a ...

~a

by ~a

[read]


") (define xarticles "

~a

~a ...

~a

by ~a

[read story]


") (define xcomments "

~a

~a


") (define xfactsheets "

~a

~a

[read]

") (define (pky->html pky) (string-append (number->string pky) ".html")) (define (comments) (let ((lv (query-rows cn (string-append "select kwd,dsc " "from tbl " "where sec='comments'" "order by dat desc")))) (for/fold ((acc "")) ((avect lv)) (string-append acc (let-values (((kwd dsc) (apply values (vector->list avect)))) (apply format xcomments (list dsc (car (regexp-split "," kwd))))))))) (define (factsheets) (let ((lv (query-rows cn (string-append "select tle,dsc,url " "from tbl " "where sec='factsheets'" "order by tle")))) (for/fold ((acc "")) ((avect lv)) (string-append acc (let-values (((tle dsc url) (apply values (vector->list avect)))) (apply format xfactsheets (list tle dsc url))))))) (define (articles) (let ((lv (query-rows cn (string-append "select pky,tle,kwd,dsc,dat,url " "from tbl " "where sec='articles' " "order by dat")))) (for/fold ((acc "")) ((avect lv)) (string-append acc (let-values (((pky tle kwd dsc dat url) (apply values (vector->list avect)))) (apply format xarticles (list tle dsc dat (car (regexp-split "," kwd)) (if (string=? url "url") (pky->html pky) url)))))))) (define (sec-lst sec homepage) (let* ((where-clause (if (boolean=? homepage #t) "where sec=$1 and typ in ('P','I') " "where sec=$1 ") ) (lv (query-rows cn (string-append "select pky,tle,dsc,dat,kwd,url " "from tbl " where-clause "order by dat desc") sec))) (for/fold ((acc "")) ((avect lv)) (string-append acc (let-values (((pky tle dsc dat kwd url) (apply values (vector->list avect)))) (apply format xsecitm (list tle dsc dat (car (regexp-split "," kwd)) (if (string=? url "url") (pky->html pky) url)))))))) )