Handle conflicts when inserting lint warning message sets

This commit is contained in:
Christopher Baines 2024-11-29 13:48:10 +00:00
parent 9a38374e7c
commit 930169751c

View file

@ -35,22 +35,6 @@
(list locale message)))
messages-by-locale)))
(define (insert-lint-warning-message-set conn lint-message-ids)
(let ((query
(string-append
"INSERT INTO lint_warning_message_sets (message_ids) VALUES "
(string-append
"('{"
(string-join
(map number->string
(sort lint-message-ids <))
", ")
"}')")
" RETURNING id")))
(match (exec-query conn query)
(((id)) id))))
(define (lint-warning-message-data->lint-warning-message-set-id
conn
messages-by-locale)
@ -58,21 +42,36 @@
(let* ((lint-warning-message-ids
(lint-warning-message-data->lint-warning-message-ids
conn messages-by-locale))
(lint-message-set-id
(exec-query
conn
(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 lint-message-set-id
(match (exec-query conn select-query)
(((id)) id)
(()
(insert-lint-warning-message-set conn lint-warning-message-ids))))))
(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)))))))))
(define (lint-warning-message-locales-for-revision conn commit-hash)
(exec-query