aboutsummaryrefslogtreecommitdiff
path: root/guix-data-service/model/lint-warning-message.scm
diff options
context:
space:
mode:
Diffstat (limited to 'guix-data-service/model/lint-warning-message.scm')
-rw-r--r--guix-data-service/model/lint-warning-message.scm53
1 files changed, 15 insertions, 38 deletions
diff --git a/guix-data-service/model/lint-warning-message.scm b/guix-data-service/model/lint-warning-message.scm
index 7dd0e28..c44ba8a 100644
--- a/guix-data-service/model/lint-warning-message.scm
+++ b/guix-data-service/model/lint-warning-message.scm
@@ -16,6 +16,7 @@
;;; <http://www.gnu.org/licenses/>.
(define-module (guix-data-service model lint-warning-message)
+ #:use-module (srfi srfi-43)
#:use-module (ice-9 match)
#:use-module (squee)
#:use-module (guix-data-service database)
@@ -30,48 +31,24 @@
conn
"lint_warning_messages"
'(locale message)
- (map (match-lambda
- ((locale . message)
- (list locale message)))
- messages-by-locale)))
+ (let ((v (list->vector messages-by-locale)))
+ (vector-map! (lambda (_ data)
+ (match data
+ ((locale . message)
+ (list locale message))))
+ v)
+ v)))
(define (lint-warning-message-data->lint-warning-message-set-id
conn
messages-by-locale)
-
- (let* ((lint-warning-message-ids
- (lint-warning-message-data->lint-warning-message-ids
- conn messages-by-locale))
- (select-query
- (string-append
- "SELECT id FROM lint_warning_message_sets "
- "WHERE message_ids = ARRAY["
- (string-join (map number->string
- (sort lint-warning-message-ids <)) ", ")
- "]")))
-
- (string->number
- (match (exec-query conn select-query)
- (((id)) id)
- (()
- (match (exec-query
- conn
- (string-append
- "
-INSERT INTO lint_warning_message_sets (message_ids) VALUES "
- (string-append
- "('{"
- (string-join
- (map number->string
- (sort lint-warning-message-ids <))
- ", ")
- "}')") "
-ON CONFLICT DO NOTHING RETURNING id"))
- (((id)) id)
- (()
- (match (exec-query conn select-query)
- (((id)) id)))))))))
-
+ (insert-and-return-id
+ conn
+ "lint_warning_message_sets"
+ '(message_ids)
+ (list (lint-warning-message-data->lint-warning-message-ids
+ conn
+ messages-by-locale))))
(define (lint-warning-message-locales-for-revision conn commit-hash)
(exec-query