Apply cache to cms client

This commit is contained in:
Akira Tempaku 2025-05-17 01:30:57 +09:00
parent 9acec8bbe2
commit ea91a6043e
Signed by: paku
GPG key ID: 5B4E8402BCC50607
3 changed files with 24 additions and 4 deletions

1
qlfile
View file

@ -8,3 +8,4 @@ ql cl-dotenv
ql clack-errors
git microcms https://github.com/skyizwhite/microcms-lisp-sdk
ql local-time
ql function-cache

View file

@ -42,3 +42,7 @@
(:class qlot/source/ql:source-ql
:initargs (:%version :latest)
:version "ql-2024-10-12"))
("function-cache" .
(:class qlot/source/ql:source-ql
:initargs (:%version :latest)
:version "ql-2023-10-21"))

View file

@ -3,18 +3,33 @@
(:import-from #:microcms
#:define-list-client
#:define-object-client)
(:import-from #:function-cache
#:defcached)
(:import-from #:website/lib/env
#:microcms-service-domain
#:microcms-api-key)
(:export #:get-blog-list
#:get-blog-detail
#:get-about
#:get-work))
(:export #:get-about
#:get-work
#:get-blog-list
#:get-blog-detail))
(in-package #:website/lib/cms)
(setf microcms:*service-domain* (microcms-service-domain))
(setf microcms:*api-key* (microcms-api-key))
(defmacro memorize (name timeout)
(let ((origin (gensym)))
`(progn
(setf (fdefinition ',origin) (fdefinition ',name))
(defcached (,name :timeout ,timeout) (&key query)
(,origin :query query)))))
(define-object-client about)
(memorize get-about 60)
(define-object-client work)
(memorize get-work 60)
(define-list-client blog)
(memorize get-blog-list 60)
(memorize get-blog-detail 60)