2025-05-02 09:39:55 +09:00
|
|
|
(defpackage #:website/lib/cms
|
2025-04-29 01:26:02 +09:00
|
|
|
(:use #:cl)
|
|
|
|
(:import-from #:microcms
|
2025-04-29 19:13:40 +09:00
|
|
|
#:define-list-client
|
|
|
|
#:define-object-client)
|
2025-05-17 01:30:57 +09:00
|
|
|
(:import-from #:function-cache
|
|
|
|
#:defcached)
|
2025-05-02 09:39:55 +09:00
|
|
|
(:import-from #:website/lib/env
|
2025-04-29 01:26:02 +09:00
|
|
|
#:microcms-service-domain
|
|
|
|
#:microcms-api-key)
|
2025-05-17 01:30:57 +09:00
|
|
|
(:export #:get-about
|
|
|
|
#:get-work
|
|
|
|
#:get-blog-list
|
|
|
|
#:get-blog-detail))
|
2025-05-04 00:38:07 +09:00
|
|
|
(in-package #:website/lib/cms)
|
2025-04-29 01:26:02 +09:00
|
|
|
|
|
|
|
(setf microcms:*service-domain* (microcms-service-domain))
|
|
|
|
(setf microcms:*api-key* (microcms-api-key))
|
|
|
|
|
2025-05-17 23:48:30 +09:00
|
|
|
(defmacro memorize (name)
|
2025-05-17 01:30:57 +09:00
|
|
|
(let ((origin (gensym)))
|
|
|
|
`(progn
|
|
|
|
(setf (fdefinition ',origin) (fdefinition ',name))
|
2025-05-17 23:48:30 +09:00
|
|
|
(defcached ,name (&key query)
|
2025-05-17 01:30:57 +09:00
|
|
|
(,origin :query query)))))
|
|
|
|
|
2025-05-03 13:26:31 +09:00
|
|
|
(define-object-client about)
|
2025-05-17 23:48:30 +09:00
|
|
|
(memorize get-about)
|
2025-05-17 01:30:57 +09:00
|
|
|
|
2025-04-29 19:13:40 +09:00
|
|
|
(define-object-client work)
|
2025-05-17 23:48:30 +09:00
|
|
|
(memorize get-work)
|
2025-05-17 01:30:57 +09:00
|
|
|
|
2025-04-29 01:26:02 +09:00
|
|
|
(define-list-client blog)
|
2025-05-17 23:48:30 +09:00
|
|
|
(memorize get-blog-list)
|
|
|
|
(memorize get-blog-detail)
|