iens

Manager of links to read
git clone https://git.instinctive.eu/iens.git
Log | Files | Refs | README | LICENSE

commit 808b8fec32c36924dcef69b55118eb075cb20cea
parent cd2633e28a3445cdd51f1df19bab033e8f874f51
Author: Natasha Kerensikova <natgh@instinctive.eu>
Date:   Fri, 15 May 2026 18:55:08 +0000

Feed generation on gruik push
Diffstat:
Msrc/cgi.scm | 23+++++++++++++++++++++--
1 file changed, 21 insertions(+), 2 deletions(-)

diff --git a/src/cgi.scm b/src/cgi.scm @@ -257,7 +257,13 @@ END-OF-CSS (die "Missing $DOCUMENT_ROOT")) (define db-name (get-environment-variable "IENS_DB")) (when (not db-name) - (die "Missing $IENS_DB")) + (die "Missing $IENS_DB")) +(define feed-root + (let ((raw (get-environment-variable "FEED_ROOT"))) + (cond + ((or (not raw) (zero? (string-length raw))) "") + ((eqv? #\/ (string-ref raw (sub1 (string-length raw)))) raw) + (else (string-append raw "/"))))) (define db (open-database db-name)) (exec (sql/transient db "PRAGMA foreign_keys = ON;")) @@ -759,6 +765,17 @@ END-OF-CSS " to " (rfc-3339 (cadddr hunk))))) (else `(li ,(conc "malformed hunk: " hunk))))) diff)))) +(define (update-feed id) + (exec (sql/transient db "UPDATE feed SET mtime=? WHERE id=?;") + (current-seconds) + id) + (query (for-each-row + (lambda (row) + (apply generate-feed* + (cons (string-append feed-root (car row)) (cdr row))))) + (sql/transient db + "SELECT filename,mtime,title,url,selector FROM feed WHERE id=?;") + id)) (define (fragment-diff-feed* base-sig) (let ((id (car base-sig)) (title (cadr base-sig)) @@ -767,7 +784,9 @@ END-OF-CSS (let ((diff (diff-signature old-sig (build-signature selector)))) (if (null? diff) '() - (fragment-sig-diff id title diff))))) + (begin + (update-feed id) + (fragment-sig-diff id title diff)))))) (define (fragment-diff-feed base-sigs) (join (map fragment-diff-feed* base-sigs)))