Add cache library

This commit is contained in:
Akira Tempaku 2025-05-18 21:41:47 +09:00
parent fdad470f0e
commit 45603a27bf
Signed by: paku
GPG key ID: 5B4E8402BCC50607
3 changed files with 17 additions and 11 deletions

15
src/lib/cache.lisp Normal file
View file

@ -0,0 +1,15 @@
(defpackage #:website/lib/cache
(:use #:cl)
(:import-from #:function-cache
#:defcached
#:clear-cache)
(:export #:memorize
#:clear-cache))
(in-package #:website/lib/cache)
(defmacro memorize (name)
(let ((origin (gensym)))
`(progn
(setf (fdefinition ',origin) (fdefinition ',name))
(defcached ,name (&rest args)
(apply #',origin args)))))

View file

@ -3,11 +3,11 @@
(: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)
(:import-from #:website/lib/cache
#:memorize)
(:export #:get-about
#:get-works
#:get-blog-list
@ -17,13 +17,6 @@
(setf microcms:*service-domain* (microcms-service-domain))
(setf microcms:*api-key* (microcms-api-key))
(defmacro memorize (name)
(let ((origin (gensym)))
`(progn
(setf (fdefinition ',origin) (fdefinition ',name))
(defcached ,name (&key query)
(,origin :query query)))))
(define-object-client about)
(memorize get-about)

View file

@ -1,8 +1,6 @@
(defpackage #:website/routes/api/revalidate
(:use #:cl
#:jingle)
(:import-from #:function-cache
#:clear-cache)
(:import-from #:website/lib/env
#:microcms-webhook-key)
(:import-from #:website/helper