(defpackage #:website/routes/blog/index
  (:use #:cl
        #:hsx
        #:jingle)
  (:import-from #:website/lib/cms
                #:get-blog-list)
  (:import-from #:website/lib/time
                #:asctime)
  (:export #:handle-get))
(in-package #:website/routes/blog/index)

(defparameter *metadata*
  (list :title "blog"))

(defun handle-get (params)
  (declare (ignore params))
  (setf (context :metadata) *metadata*)
  (let ((blogs (getf (get-blog-list :query '(:fields "id,title,publishedAt"
                                             :limit 100))
                     :contents)))
    (hsx
     (section
       (h1 :class "font-bold text-4xl mb-8"
         "Blog")
       (ul :preload "mouseover" :class "flex flex-col gap-y-2"
         (loop
           :for item :in blogs :collect
              (hsx
               (li :class "marker:m-0"
                 (a
                   :class "hover:text-pink-500"
                   :href (format nil "/blog/~a" (getf item :id))
                   (span "・ " (getf item :title))
                   (span :class "text-sm text-gray-400 ml-2"
                     "(" (asctime (getf item :published-at)) ")"))))))
       ;TODO: pagenation
       ))))