From 7f33d8ff10f3b043bfdecd2bfb6a11edaf513023 Mon Sep 17 00:00:00 2001 From: Marcus Kammer Date: Fri, 9 Aug 2024 22:26:15 +0200 Subject: [PATCH] Improve code readability --- dev.metalisp.survey.asd | 2 +- src/questionnaire.lisp | 58 +++++++++++++++++++++++------------------ 2 files changed, 33 insertions(+), 27 deletions(-) diff --git a/dev.metalisp.survey.asd b/dev.metalisp.survey.asd index cf5221f..8624dc3 100644 --- a/dev.metalisp.survey.asd +++ b/dev.metalisp.survey.asd @@ -2,7 +2,7 @@ (defsystem "dev.metalisp.survey" :description "A simple survey" - :version "0.3.7" + :version "0.3.8" :author "Marcus Kammer " :source-control "git@git.sr.ht:~marcuskammer/dev.metalisp.survey" :licence "MIT" diff --git a/src/questionnaire.lisp b/src/questionnaire.lisp index 83a23fe..a25257e 100644 --- a/src/questionnaire.lisp +++ b/src/questionnaire.lisp @@ -99,35 +99,41 @@ available in its environment for full functionality." (setf *html-lang* (questionnaire-lang q)) (view q)) -(defun process-questionnaire-post (request survey q) +(defun questionnaire-write-to-file (data-file) + (ml-survey/fileops:write-to-file data-file + (list :type (if (likert-p (questionnaire-name q)) + "likert" + "mixed") + :name (questionnaire-name q) + :timestamp (ml-survey/app:today+now) + :post-data post-params))) + +(defun process-questionnaire-post (post-params survey q) (declare (type questionnaire q)) - (let* ((post-params (hunchentoot:post-parameters* request)) - (survey-id (ml-survey/survey:survey-id survey)) + (let* ((survey-id (ml-survey/survey:survey-id survey)) (questionnaire-id (ml-survey/app:generate-uuid)) - (questionnaire-data-file (ml-survey/fileops:ensure-data-file-exist survey-id - questionnaire-id))) - - (ml-survey/fileops:write-to-file questionnaire-data-file - (list :type (if (likert-p (questionnaire-name q)) - "likert" - "mixed") - :name (questionnaire-name q) - :timestamp (ml-survey/app:today+now) - :post-data post-params)) - + (questionnaire-data-file (ml-survey/fileops:ensure-data-file-exist survey-id questionnaire-id))) + (questionnaire-write-to-file questionnaire-data-file) (view-submit))) -(define-easy-handler (questionnaire-handler :uri #'questionnaire-uri) nil - (let ((s (make-instance 'ml-survey/survey:survey - :id (ml-survey/app:extract-from (hunchentoot:request-uri*) :survey-id))) +(defun extract-uri-param (param) + (ml-survey/app:extract-from (hunchentoot:request-uri*) param)) - (questionnaire (make-questionnaire :lang - (ml-survey/app:extract-from (hunchentoot:request-uri*) - :lang) - :name - (ml-survey/app:extract-from (hunchentoot:request-uri*) - :questionnaire)))) +(defun create-survey (survey-id) + (make-instance 'ml-survey/survey:survey :id survey-id)) - (ecase (hunchentoot:request-method*) - (:get (process-questionnaire-get questionnaire)) - (:post (process-questionnaire-post hunchentoot:*request* s questionnaire))))) +(defun create-questionnaire (lang name) + (make-questionnaire :lang lang :name name)) + +(defun process-request (survey questionnaire) + (ecase (hunchentoot:request-method*) + (:get (process-questionnaire-get questionnaire)) + (:post (process-questionnaire-post (hunchentoot:post-parameters*) survey questionnaire)))) + +(define-easy-handler (questionnaire-handler :uri #'questionnaire-uri) () + (let* ((survey-id (extract-uri-param :survey-id)) + (lang (extract-uri-param :lang)) + (questionnaire-name (extract-uri-param :questionnaire)) + (survey (create-survey survey-id)) + (questionnaire (create-questionnaire lang questionnaire-name))) + (process-request survey questionnaire)))