diff options
author | Danjela Lura <danielaluraa@gmail.com> | 2020-05-28 22:17:11 +0200 |
---|---|---|
committer | Christopher Baines <mail@cbaines.net> | 2020-06-07 20:17:03 +0100 |
commit | f67bea719d07cf48818bc0c2a1adca4edb291cd7 (patch) | |
tree | db42bd81351e88154541e87b38d01108379d2636 /guix-data-service/model/lint-checker.scm | |
parent | ae6541af1e23ec0a9d20e9abee73d3404d58078c (diff) | |
download | data-service-f67bea719d07cf48818bc0c2a1adca4edb291cd7.tar data-service-f67bea719d07cf48818bc0c2a1adca4edb291cd7.tar.gz |
Get the translated lint checker descriptions into the database
Signed-off-by: Christopher Baines <mail@cbaines.net>
Diffstat (limited to 'guix-data-service/model/lint-checker.scm')
-rw-r--r-- | guix-data-service/model/lint-checker.scm | 68 |
1 files changed, 63 insertions, 5 deletions
diff --git a/guix-data-service/model/lint-checker.scm b/guix-data-service/model/lint-checker.scm index a2a10a1..181d5fd 100644 --- a/guix-data-service/model/lint-checker.scm +++ b/guix-data-service/model/lint-checker.scm @@ -23,21 +23,75 @@ #:export (lint-checkers->lint-checker-ids lint-warning-count-by-lint-checker-for-revision insert-guix-revision-lint-checkers - lint-checkers-for-revision)) + lint-checkers-for-revision + lint-checker-description-data->lint-checker-description-set-id)) (define (lint-checkers->lint-checker-ids conn lint-checkers-data) (insert-missing-data-and-return-all-ids conn "lint_checkers" - '(name description network_dependent) + '(name network_dependent lint_checker_description_set_id) lint-checkers-data)) +(define (lint-checker-description-data->lint-checker-description-ids + conn descriptions-by-locale) + (insert-missing-data-and-return-all-ids + conn + "lint_checker_descriptions" + '(locale description) + (map (match-lambda + ((locale . description) + (list locale description))) + descriptions-by-locale))) + +(define (insert-lint-checker-description-set conn lint-description-ids) + (let ((query + (string-append + "INSERT INTO lint_checker_description_sets (description_ids) VALUES " + (string-append + "('{" + (string-join + (map number->string + (sort lint-description-ids <)) + ", ") + "}')") + " RETURNING id"))) + (match (exec-query conn query) + (((id)) id)))) + +(define (lint-checker-description-data->lint-checker-description-set-id + conn + descriptions-by-locale) + (let* ((lint-checker-description-ids + (lint-checker-description-data->lint-checker-description-ids + conn + descriptions-by-locale)) + (lint-checker-description-set-id + (exec-query + conn + (string-append + "SELECT id FROM lint_checker_description_sets" + " WHERE description_ids = ARRAY[" + (string-join (map number->string + (sort lint-checker-description-ids <)) ", ") + "]")))) + (string->number + (match lint-checker-description-set-id + (((id)) id) + (() + (insert-lint-checker-description-set conn lint-checker-description-ids)))))) + + (define (lint-warning-count-by-lint-checker-for-revision conn commit-hash) (define query " -SELECT lint_checkers.name, lint_checkers.description, +SELECT lint_checkers.name, lint_checker_descriptions.description, lint_checkers.network_dependent, revision_data.count FROM lint_checkers +INNER JOIN lint_checker_description_sets + ON lint_checkers.lint_checker_description_set_id = lint_checker_description_sets.id +INNER JOIN lint_checker_descriptions + ON lint_checker_descriptions.id = ANY (lint_checker_description_sets.description_ids) INNER JOIN ( SELECT lint_checker_id, COUNT(*) FROM lint_warnings @@ -76,9 +130,13 @@ ORDER BY count DESC") (exec-query conn " -SELECT name, description, network_dependent +SELECT lint_checkers.name, lint_checker_descriptions.description, lint_checkers.network_dependent FROM lint_checkers -WHERE id IN ( +INNER JOIN lint_checker_description_sets + ON lint_checkers.lint_checker_description_set_id = lint_checker_description_sets.id +INNER JOIN lint_checker_descriptions + ON lint_checker_descriptions.id = ANY (lint_checker_description_sets.description_ids) +WHERE lint_checkers.id IN ( SELECT lint_checker_id FROM guix_revision_lint_checkers INNER JOIN guix_revisions |