Define more survey functions

This commit is contained in:
Marcus Kammer 2024-06-02 14:38:12 +02:00
parent 43e32338c7
commit 2a314583d6
Signed by: marcuskammer
GPG key ID: C374817BE285268F

View file

@ -12,14 +12,23 @@
(and (= (length parts) 2) (and (= (length parts) 2)
(string= (first parts) "survey") (string= (first parts) "survey")
(every #'digit-char-p (second parts)) (every #'digit-char-p (second parts))
(valid-survey-id-p (parse-integer (second parts)))))) (survey-id-p (parse-integer (second parts))))))
(defun survey-uri (request) (defun survey-uri (request)
(let ((uri (request-uri request))) (let ((uri (request-uri request)))
(survey-uri-p uri))) (survey-uri-p uri)))
(defun survey-id (uri)
(check-type uri string)
(let ((id (second (split-uri uri))))
(unless (survey-id-p (parse-integer id))
(error "Wrong survey id"))
id))
(defun survey-properties (id)
(check-type id integer)
(first (rest (assoc id (load-response (make-surveys-db-path))))))
(define-easy-handler (survey :uri #'survey-uri) () (define-easy-handler (survey :uri #'survey-uri) ()
(let* ((id (second (split-uri (request-uri*)))) (let ((id (survey-id (request-uri*))))
(survey (assoc (parse-integer id) (ml-survey/views:survey id (survey-properties (parse-integer id)))))
(load-response (make-surveys-db-path)))))
(ml-survey/views:survey survey)))