diff options
author | Dan Goodliffe <dan@randomdan.homeip.net> | 2015-08-07 22:53:33 +0100 |
---|---|---|
committer | Dan Goodliffe <dan@randomdan.homeip.net> | 2015-08-08 02:02:36 +0100 |
commit | c5c2d3d5514554008217683484075c18cfc45244 (patch) | |
tree | dfb0ab1c5d34251a49774c8086d28522ab219c43 | |
parent | Replace use flag import (diff) | |
download | gentoobrowse-c5c2d3d5514554008217683484075c18cfc45244.tar.bz2 gentoobrowse-c5c2d3d5514554008217683484075c18cfc45244.tar.xz gentoobrowse-c5c2d3d5514554008217683484075c18cfc45244.zip |
Do package metadata inline
-rw-r--r-- | gentoobrowse/console/packageimport.xml | 30 | ||||
-rw-r--r-- | gentoobrowse/console/packagemetadata.xml | 49 | ||||
-rw-r--r-- | gentoobrowse/datasources/schema.sql | 4 |
3 files changed, 28 insertions, 55 deletions
diff --git a/gentoobrowse/console/packageimport.xml b/gentoobrowse/console/packageimport.xml index c0061b3..7a98ef9 100644 --- a/gentoobrowse/console/packageimport.xml +++ b/gentoobrowse/console/packageimport.xml @@ -31,18 +31,41 @@ </sql> </project2:sqltask> - <project2:sqlmerge name="packages" datasource="postgres" targettable="packages" useview="yes"> + <project2:sqlmerge name="packages" datasource="postgres" targettable="packages" useview="no"> <sql> - SELECT categoryid, pkgname AS name, description + SELECT d.categoryid, d.pkgname AS name, description, maintainer, maintainername, herd, summary, image FROM ( - SELECT categoryid, pkgname, description, RANK() OVER(PARTITION BY categoryid, pkgname ORDER BY versioninst desc) r + SELECT categoryid, pkgname, description, RANK() OVER(PARTITION BY categoryid, pkgname ORDER BY version DESC) r FROM ebuilddefs) d + LEFT OUTER JOIN ( + SELECT categoryid, pkgname, maintainer, maintainername, herd, r, + TRIM(REGEXP_REPLACE(REGEXP_REPLACE(COALESCE(longdescen, longdesc), '<<data:image/[^>]+>>', ''), '\s+', ' ', 'g')) AS summary, + (SELECT REGEXP_MATCHES(COALESCE(longdescen, longdesc), '<<(data:image/[^>]+)>>')) AS image + FROM ( + SELECT categoryid, pkgname, RANK() OVER(PARTITION BY categoryid, pkgname ORDER BY repoid DESC) r, + CAST((XPATH('/pkgmetadata/maintainer/email/text()', doc))[1] AS TEXT) maintainer, + CAST((XPATH('/pkgmetadata/maintainer/name/text()', doc))[1] AS TEXT) maintainername, + CAST((XPATH('/pkgmetadata/longdescription[@lang="en"]/text()', doc))[1] AS TEXT) longdescen, + CAST((XPATH('/pkgmetadata/longdescription[not(@lang)]/text()', doc))[1] AS TEXT) longdesc, + CAST((XPATH('/pkgmetadata/herd/text()', doc))[1] AS TEXT) herd + FROM ( + SELECT f.repoid, categoryid, f.pathparts[2] pkgname, XMLPARSE(DOCUMENT PG_READ_FILE(f.filename)) doc + FROM files f, categories c + WHERE filetypeid = 4 + AND f.pathparts[1] = c.name) x) x + ) m ON m.categoryid = d.categoryid AND m.pkgname = d.pkgname WHERE d.r = 1 + AND m.r = 1 </sql> <columns> <categoryid key="true" /> <name key="true" /> <description /> + <maintainer /> + <maintainername /> + <herd /> + <summary /> + <image /> </columns> </project2:sqlmerge> @@ -168,7 +191,6 @@ <xi:include href="use.local.xml" /> <xi:include href="use.grouped.xml" /> <xi:include href="categorymetadata.xml" /> - <xi:include href="packagemetadata.xml" /> <xi:include href="packagemasks.xml" /> <xi:include href="bugassociate.xml" /> </packageimport> diff --git a/gentoobrowse/console/packagemetadata.xml b/gentoobrowse/console/packagemetadata.xml deleted file mode 100644 index b66abfe..0000000 --- a/gentoobrowse/console/packagemetadata.xml +++ /dev/null @@ -1,49 +0,0 @@ -<?xml version="1.0"?> -<homepages name="bugimport" xmlns:xi="http://www.w3.org/2001/XInclude" - xmlns:project2="http://project2.randomdan.homeip.net"> - <project2:sqlrows name="pkgblanksummaries" datasource="postgres"> - <sql> - SELECT p.packageid, 'file://' || ft.searchroot || f.filename AS path, f.moddate - FROM packages p, categories c, files f, filetypes ft - WHERE (f.cachedat IS NULL OR f.cachedat != f.moddate) - AND p.categoryid = c.categoryid - AND f.filename = c.name || '/' || p.name || '/metadata.xml' - AND f.filetypeid = ft.filetypeid - AND ft.filetypeid = 4 - </sql> - </project2:sqlrows> - <project2:xpathrows name="pkg" html="false" warnings="true"> - <url source="parent" name="path" depth="1" /> - <filterviews> - <pkgmetadata root="/pkgmetadata"> - <fields> - <longdesc xpath="longdescription" /> - <maintainer xpath="maintainer/email" /> - <herd xpath="herd" /> - </fields> - </pkgmetadata> - </filterviews> - </project2:xpathrows> - <project2:iterate name="eachpkg" source="pkgblanksummaries"> - <project2:iterate name="pkgdetail" source="pkg" filter="pkgmetadata"> - <project2:sqltask name="update" datasource="postgres"> - <sql> - UPDATE packages SET - summary = regexp_replace(<param source="parent" name="longdesc" />, '<<data:image/[^>]+>>', ''), - image = (SELECT regexp_matches(<param source="parent" name="longdesc" />, '<<(data:image/[^>]+)>>'))[1], - maintainer = <param source="parent" name="maintainer" />, - herd = <param source="parent" name="herd" />, - metadatadate = <param source="parent" name="moddate" depth="2" /> - WHERE packageid = <param source="parent" name="packageid" depth="2" /> - </sql> - </project2:sqltask> - </project2:iterate> - </project2:iterate> - <project2:sqltask name="update" datasource="postgres"> - <sql> - UPDATE files SET - cachedat = moddate - WHERE filetypeid = 4 - </sql> - </project2:sqltask> -</homepages> diff --git a/gentoobrowse/datasources/schema.sql b/gentoobrowse/datasources/schema.sql index be36a20..ffe4111 100644 --- a/gentoobrowse/datasources/schema.sql +++ b/gentoobrowse/datasources/schema.sql @@ -201,8 +201,8 @@ CREATE TABLE packages ( summary text, maintainer text, herd text, - metadatadate timestamp without time zone, - image text + image text, + maintainername text ); ALTER TABLE packages OWNER TO gentoo; -- Name: TABLE packages; Type: COMMENT; Schema: gentoobrowse; Owner: gentoo |