From 0a7e6a76f332813f6b1d37db026fa8ce5243784c Mon Sep 17 00:00:00 2001 From: Christopher Baines Date: Sun, 19 May 2019 21:26:38 +0100 Subject: Add #:no-default-when option to parse-query-parameters Where there are multiple interrelated fields, then it's useful to only apply the default if another field hasn't been specified. --- guix-data-service/web/query-parameters.scm | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/guix-data-service/web/query-parameters.scm b/guix-data-service/web/query-parameters.scm index 41e9beb..12ac4c6 100644 --- a/guix-data-service/web/query-parameters.scm +++ b/guix-data-service/web/query-parameters.scm @@ -150,6 +150,21 @@ (() (cons name default)) (x (cons name x)))) + ((name processor #:no-default-when fields #:default default) + (let ((use-default? + (every (lambda (field) + (not (memq field fields))) + fields))) + (match (assq name request-query-parameters) + (#f (if use-default? + (cons name default) + #f)) + ((_ . "") (if use-default? + (cons name default) + #f)) + ((_ . value) (cons name + (processor value)))))) + ((name processor #:default default) (match (assq name request-query-parameters) (#f (cons name default)) -- cgit v1.2.3