Replace survey function call

This commit is contained in:
Marcus Kammer 2024-06-02 21:12:47 +02:00
parent 8ec67cd985
commit 10bc5347ff
Signed by: marcuskammer
GPG key ID: C374817BE285268F

View file

@ -1,19 +1,5 @@
(in-package :ml-survey/handlers) (in-package :ml-survey/handlers)
(defun survey-uri-p (uri)
"Check if the request URI matches the pattern '/survey/<numeric>'"
(check-type uri string)
(let ((parts (split-uri uri))
(survey (make-survey uri)))
(and (= (length parts) 2)
(string= (first parts) "survey")
(every #'digit-char-p (second parts))
(funcall survey 'id-p))))
(defun survey-uri (request)
(let ((uri (request-uri request)))
(survey-uri-p uri)))
(defun make-survey (uri) (defun make-survey (uri)
(labels ((survey-fn (action) (labels ((survey-fn (action)
(case action (case action
@ -29,6 +15,10 @@
(load-response (make-surveys-db-path))))))))) (load-response (make-surveys-db-path)))))))))
#'survey-fn)) #'survey-fn))
(defun survey-uri (request)
(let ((survey (make-survey (request-uri request))))
(funcall survey 'uri-p)))
(define-easy-handler (survey :uri #'survey-uri) () (define-easy-handler (survey :uri #'survey-uri) ()
(let ((survey (make-survey (request-uri*)))) (let ((survey (make-survey (request-uri*))))
(ml-survey/views:survey (funcall survey 'id) (funcall survey 'properties)))) (ml-survey/views:survey (funcall survey 'id) (funcall survey 'properties))))