diff options
author | Christopher Baines <mail@cbaines.net> | 2019-05-16 22:28:16 +0100 |
---|---|---|
committer | Christopher Baines <mail@cbaines.net> | 2019-05-16 22:28:16 +0100 |
commit | 83012b101b2a900d1bccfcb8ed9deab2aa002e9a (patch) | |
tree | 5c397d475605c61d262300cc94dbbc7431a1b36d /guix-data-service/model | |
parent | d52f5b530f079ec7d2efbab81ddf31eca90b584f (diff) | |
download | data-service-83012b101b2a900d1bccfcb8ed9deab2aa002e9a.tar data-service-83012b101b2a900d1bccfcb8ed9deab2aa002e9a.tar.gz |
Allow specifying the fields on the packages page
This is mostly for the JSON output, as it allows much more information to be
included.
Diffstat (limited to 'guix-data-service/model')
-rw-r--r-- | guix-data-service/model/package.scm | 31 |
1 files changed, 29 insertions, 2 deletions
diff --git a/guix-data-service/model/package.scm b/guix-data-service/model/package.scm index 39fa64d..1579469 100644 --- a/guix-data-service/model/package.scm +++ b/guix-data-service/model/package.scm @@ -35,10 +35,23 @@ (define query (string-append " WITH data AS ( - SELECT packages.name, packages.version, package_metadata.synopsis + SELECT packages.name, packages.version, package_metadata.synopsis, + package_metadata.description, package_metadata.home_page, + locations.file, locations.line, locations.column_number, + (SELECT JSON_AGG((license_data.*)) + FROM ( + SELECT licenses.name, licenses.uri, licenses.comment + FROM licenses + INNER JOIN license_sets ON licenses.id = ANY(license_sets.license_ids) + WHERE license_sets.id = package_metadata.license_set_id + ORDER BY licenses.name + ) AS license_data + ) AS licenses FROM packages INNER JOIN package_metadata ON packages.package_metadata_id = package_metadata.id + LEFT OUTER JOIN locations + ON package_metadata.location_id = locations.id WHERE packages.id IN ( SELECT package_derivations.package_id FROM package_derivations @@ -78,10 +91,24 @@ WHERE data.name IN (SELECT name FROM package_names);")) " SELECT packages.name, packages.version, - package_metadata.synopsis + package_metadata.synopsis, + package_metadata.description, + package_metadata.home_page, + locations.file, locations.line, locations.column_number, + (SELECT JSON_AGG((license_data.*)) + FROM ( + SELECT licenses.name, licenses.uri, licenses.comment + FROM licenses + INNER JOIN license_sets ON licenses.id = ANY(license_sets.license_ids) + WHERE license_sets.id = package_metadata.license_set_id + ORDER BY licenses.name + ) AS license_data + ) AS licenses FROM packages INNER JOIN package_metadata ON packages.package_metadata_id = package_metadata.id +LEFT OUTER JOIN locations + ON package_metadata.location_id = locations.id WHERE packages.id IN ( SELECT package_derivations.package_id FROM package_derivations |