diff options
author | Christopher Baines <mail@cbaines.net> | 2019-10-13 21:10:10 +0100 |
---|---|---|
committer | Christopher Baines <mail@cbaines.net> | 2019-10-13 21:10:10 +0100 |
commit | 06723370e529ae874b6ef2bee025b04131af4839 (patch) | |
tree | 72d4f396cd09b13b19e38d69177c48510fe7fd6d /guix-data-service/web/controller.scm | |
parent | 955ada8bca477aee95be11b8b7f2f88ecce330d4 (diff) | |
download | data-service-06723370e529ae874b6ef2bee025b04131af4839.tar data-service-06723370e529ae874b6ef2bee025b04131af4839.tar.gz |
Refactor the jobs pages code
Move the code out of the main controller and html modules. There's now too
much code in these modules, so begin to separate the functionality, starting
with the small amount of code for the jobs pages.
Diffstat (limited to 'guix-data-service/web/controller.scm')
-rw-r--r-- | guix-data-service/web/controller.scm | 48 |
1 files changed, 11 insertions, 37 deletions
diff --git a/guix-data-service/web/controller.scm b/guix-data-service/web/controller.scm index 6f534e9..e89519c 100644 --- a/guix-data-service/web/controller.scm +++ b/guix-data-service/web/controller.scm @@ -51,6 +51,7 @@ #:use-module (guix-data-service web sxml) #:use-module (guix-data-service web query-parameters) #:use-module (guix-data-service web util) + #:use-module (guix-data-service web jobs controller) #:use-module (guix-data-service web view html) #:export (controller)) @@ -881,27 +882,6 @@ derivations)) #:extra-headers http-headers-for-unchanging-content))))) -(define (render-jobs mime-types conn) - (render-html - #:sxml (view-jobs - (select-jobs-and-events conn)))) - -(define (render-job-queue mime-types conn) - (render-html - #:sxml (view-job-queue - (select-unprocessed-jobs-and-events conn)))) - -(define (render-job mime-types conn job-id query-parameters) - (render-html - #:sxml (view-job - job-id - query-parameters - (log-for-job conn job-id - #:character-limit - (assq-ref query-parameters 'characters) - #:start-character - (assq-ref query-parameters 'start_character))))) - (define (parse-commit conn) (lambda (s) (if (guix-commit-exists? conn s) @@ -983,6 +963,13 @@ (define path (uri-path (request-uri request))) + (define (delegate-to f) + (f request + method-and-path-components + mime-types + body + conn)) + (match method-and-path-components (('GET) (render-html @@ -1317,21 +1304,8 @@ (render-compare/packages mime-types conn parsed-query-parameters))) - (('GET "jobs") - (render-jobs mime-types - conn)) - (('GET "jobs" "queue") - (render-job-queue mime-types - conn)) - (('GET "job" job-id) - (let ((parsed-query-parameters - (parse-query-parameters - request - `((start_character ,parse-number) - (characters ,parse-number #:default 1000000))))) - (render-job mime-types - conn - job-id - parsed-query-parameters))) + (('GET "jobs") (delegate-to jobs-controller)) + (('GET "jobs" "queue") (delegate-to jobs-controller)) + (('GET "job" job-id) (delegate-to jobs-controller)) (('GET path ...) (not-found (request-uri request))))) |