diff options
Diffstat (limited to 'guix-data-service/model/utils.scm')
-rw-r--r-- | guix-data-service/model/utils.scm | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/guix-data-service/model/utils.scm b/guix-data-service/model/utils.scm index c17224b..af60e45 100644 --- a/guix-data-service/model/utils.scm +++ b/guix-data-service/model/utils.scm @@ -14,6 +14,7 @@ parse-postgresql-array-string deduplicate-strings group-list-by-first-n-fields + group-to-alist insert-missing-data-and-return-all-ids)) (define NULL '()) @@ -81,6 +82,20 @@ '() lists)) +(define (group-to-alist process lst) + (fold (lambda (element result) + (match (process element) + ((key . value) + (match (assoc key result) + ((_ . existing-values) + `((,key . ,(cons value existing-values)) + ,@result)) + (#f + `((,key . (,value)) + ,@result)))))) + '() + lst)) + (define* (insert-missing-data-and-return-all-ids conn table-name |