Add cache library

This commit is contained in:
Akira Tempaku 2025-05-18 21:41:47 +09:00
parent fdad470f0e
commit b67a0ef527
Signed by: paku
GPG key ID: 5B4E8402BCC50607
3 changed files with 19 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 (:import-from #:microcms
#:define-list-client #:define-list-client
#:define-object-client) #:define-object-client)
(:import-from #:function-cache
#:defcached)
(:import-from #:website/lib/env (:import-from #:website/lib/env
#:microcms-service-domain #:microcms-service-domain
#:microcms-api-key) #:microcms-api-key)
(:import-from #:website/lib/cache
#:memorize)
(:export #:get-about (:export #:get-about
#:get-works #:get-works
#:get-blog-list #:get-blog-list
@ -17,13 +17,6 @@
(setf microcms:*service-domain* (microcms-service-domain)) (setf microcms:*service-domain* (microcms-service-domain))
(setf microcms:*api-key* (microcms-api-key)) (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) (define-object-client about)
(memorize get-about) (memorize get-about)

View file

@ -1,8 +1,6 @@
(defpackage #:website/routes/api/revalidate (defpackage #:website/routes/api/revalidate
(:use #:cl (:use #:cl
#:jingle) #:jingle)
(:import-from #:function-cache
#:clear-cache)
(:import-from #:website/lib/env (:import-from #:website/lib/env
#:microcms-webhook-key) #:microcms-webhook-key)
(:import-from #:website/helper (:import-from #:website/helper
@ -10,6 +8,8 @@
(:import-from #:website/lib/cms (:import-from #:website/lib/cms
#:get-about #:get-about
#:get-works) #:get-works)
(:import-from #:website/lib/cache
#:clear-cache)
(:export #:handle-post)) (:export #:handle-post))
(in-package #:website/routes/api/revalidate) (in-package #:website/routes/api/revalidate)