From 688ef6dc18b79bbc4d0ee39c23e9defc79d6bf98 Mon Sep 17 00:00:00 2001 From: Akira Tempaku <paku@skyizwhite.dev> Date: Sun, 18 May 2025 11:05:02 +0900 Subject: [PATCH] Add contents to works page --- src/renderer.lisp | 4 +++- src/routes/about.lisp | 3 ++- src/routes/api/revalidate.lisp | 6 ++++-- src/routes/works.lisp | 16 ++++++++++++++-- 4 files changed, 23 insertions(+), 6 deletions(-) diff --git a/src/renderer.lisp b/src/renderer.lisp index 7863e38..7891cdd 100644 --- a/src/renderer.lisp +++ b/src/renderer.lisp @@ -16,7 +16,9 @@ (defmethod jingle:process-response :around ((app jingle:app) result) (when (eq (request-method *request*) :get) - (set-response-header :cache-control "public, max-age=60")) + (if (context :no-cache) + (set-response-header :cache-control "private, no-store, must-revalidate") + (set-response-header :cache-control "public, max-age=60"))) (cond ((api-request-p) (set-response-header :content-type "application/json; charset=utf-8") (call-next-method app (to-json result))) diff --git a/src/routes/about.lisp b/src/routes/about.lisp index 1fd330c..22c5241 100644 --- a/src/routes/about.lisp +++ b/src/routes/about.lisp @@ -17,13 +17,14 @@ (defun handle-get (params) (setf (context :metadata) *metadata*) (with-request-params ((draft-key "draft-key" nil)) params + (setf (context :no-cache) draft-key) (let ((about (get-about :query (list :draft-key draft-key)))) (hsx (<> (and draft-key (hsx (p :class "text-lg text-pink-500" "下書きモード"))) (article :class "prose max-w-none" (h1 "About") - (div :class "flex justify-center" + (div :class "flex justify-center" (figure :class "flex flex-col items-center" (img :src (accesses about :avatar :url) diff --git a/src/routes/api/revalidate.lisp b/src/routes/api/revalidate.lisp index 7c0457e..03d4a4b 100644 --- a/src/routes/api/revalidate.lisp +++ b/src/routes/api/revalidate.lisp @@ -8,7 +8,8 @@ (:import-from #:website/helper #:get-request-body-plist) (:import-from #:website/lib/cms - #:get-about) + #:get-about + #:get-works) (:export #:handle-post)) (in-package #:website/routes/api/revalidate) @@ -20,5 +21,6 @@ (return-from handle-post '(:|message| "Invalid token"))) (let* ((body (get-request-body-plist)) (api (getf body :|api|))) - (cond ((string= api "about") (clear-cache 'get-about))) + (cond ((string= api "about") (clear-cache 'get-about)) + ((string= api "works") (clear-cache 'get-works))) '(:|message| "ok"))) diff --git a/src/routes/works.lisp b/src/routes/works.lisp index b331190..9110875 100644 --- a/src/routes/works.lisp +++ b/src/routes/works.lisp @@ -14,6 +14,18 @@ (list :title "works")) (defun handle-get (params) - (declare (ignore params)) (setf (context :metadata) *metadata*) - (hsx (p "coming soon"))) + (with-request-params ((draft-key "draft-key" nil)) params + (setf (context :no-cache) draft-key) + (let ((works (get-works :query (list :draft-key draft-key)))) + (hsx + (<> + (and draft-key (hsx (p :class "text-lg text-pink-500" "下書きモード"))) + (article :class "prose max-w-none" + (h1 "Works") + (raw! (getf works :content)) + (p :class "text-right" + "(最終更新:" + (|time| :datetime (datetime (getf works :revised-at)) + (jp-datetime (getf works :revised-at))) + ")")))))))