diff options
author | Dan Goodliffe <dan@randomdan.homeip.net> | 2018-02-11 19:28:27 +0000 |
---|---|---|
committer | Dan Goodliffe <dan@randomdan.homeip.net> | 2018-02-11 19:28:27 +0000 |
commit | cf6d7aaeba24868956e80bc7710b422b63be2557 (patch) | |
tree | 21fc7dbf66525a90c5068511ad895c024bef3aec | |
parent | We don't have a files table now (diff) | |
download | gentoobrowse-api-cf6d7aaeba24868956e80bc7710b422b63be2557.tar.bz2 gentoobrowse-api-cf6d7aaeba24868956e80bc7710b422b63be2557.tar.xz gentoobrowse-api-cf6d7aaeba24868956e80bc7710b422b63be2557.zip |
Add range constraints for imported dates/timestamps. Add hack to correct minor typos in manually entered mask dates
5 files changed, 19 insertions, 8 deletions
diff --git a/gentoobrowse-api/db/schema.sql b/gentoobrowse-api/db/schema.sql index 77dfe3c..066d297 100644 --- a/gentoobrowse-api/db/schema.sql +++ b/gentoobrowse-api/db/schema.sql @@ -37,7 +37,8 @@ CREATE TABLE changelog ( authoremail text NOT NULL, summary text NOT NULL, body text, - files text[] NOT NULL + files text[] NOT NULL, + CONSTRAINT range_committime CHECK (((committime >= '1400-01-01'::date) AND (committime <= '9999-12-31'::date))) ); ALTER TABLE ONLY changelog ALTER COLUMN commitid SET STORAGE PLAIN; ALTER TABLE changelog OWNER TO gentoo; @@ -356,7 +357,8 @@ CREATE TABLE ebuilds ( license text, firstseen timestamp without time zone DEFAULT now() NOT NULL, moddate timestamp without time zone NOT NULL, - repoid integer NOT NULL + repoid integer NOT NULL, + CONSTRAINT range_moddate CHECK (((moddate >= '1400-01-01'::date) AND (moddate <= '9999-12-31'::date))) ); ALTER TABLE ebuilds OWNER TO gentoo; -- Name: TABLE ebuilds; Type: COMMENT; Schema: gentoobrowse; Owner: gentoo @@ -375,7 +377,8 @@ CREATE TABLE masksets ( dateadded date NOT NULL, message text NOT NULL, atomspec text[] NOT NULL, - n smallint NOT NULL + n smallint NOT NULL, + CONSTRAINT range_dateadded CHECK (((dateadded >= '1400-01-01'::date) AND (dateadded <= '9999-12-31'::date))) ); ALTER TABLE masksets OWNER TO gentoo; -- Name: changeid_seq; Type: SEQUENCE; Schema: gentoobrowse; Owner: gentoo @@ -407,7 +410,8 @@ CREATE TABLE news ( authoremail text, atomspec text[], body text[] NOT NULL, - urls text[] + urls text[], + CONSTRAINT range_posted CHECK (((posted >= '1400-01-01'::date) AND (posted <= '9999-12-31'::date))) ); ALTER TABLE news OWNER TO gentoo; -- Name: newsfts(news); Type: FUNCTION; Schema: gentoobrowse; Owner: gentoo diff --git a/gentoobrowse-api/service/maintenance/masksProcessor.cpp b/gentoobrowse-api/service/maintenance/masksProcessor.cpp index b914bd4..5a0bf53 100644 --- a/gentoobrowse-api/service/maintenance/masksProcessor.cpp +++ b/gentoobrowse-api/service/maintenance/masksProcessor.cpp @@ -10,10 +10,11 @@ #include <lexer-regex.h> #include <lexer.h> #include "sql/maintenance/masksSets.sql.h" +#include "sql/maintenance/masksFixDates.sql.h" #include "sql/maintenance/masksEbuilds.sql.h" static AdHoc::Lexer::PatternPtr maskHead = AdHoc::LexerMatchers::regex( - "^# ([^<\n]+)? ?(<(.+?@[^\n>]+)>?)? \\((\\d+ *(?:jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)\\w* \\d+)\\)$\n", + "^# ([^<\n]+)? ?(<(.+?@[^\n>]+)>?)? \\((\\d{1,2} *(?:jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)\\w* \\d{4})\\)$\n", (GRegexCompileFlags)(G_REGEX_OPTIMIZE | G_REGEX_CASELESS | G_REGEX_UNGREEDY | G_REGEX_MULTILINE)); static AdHoc::Lexer::PatternPtr maskDesc = AdHoc::LexerMatchers::regex("^# *([^\n]*)$\n", G_REGEX_MULTILINE); static AdHoc::Lexer::PatternPtr atom = AdHoc::LexerMatchers::regex("^([^\n/]+/[^\n]*)$\n?", G_REGEX_MULTILINE); @@ -86,6 +87,9 @@ namespace Gentoo { { { AdHoc::Lexer::InitialState }, discard, [&](auto) { } } }); l.extract((gchar *)f.data, f.getStat().st_size); + // Dates are hand-typed and sometimes typos occur... ensure they're at + // least within the range of Boost ptimes. + while (sql::maintenance::masksFixDates.modify(dbc)->execute()) ; DB::TablePatch p; p.dest = "gentoobrowse.masksets"; diff --git a/gentoobrowse-api/service/sql/maintenance/masksFixDates.sql b/gentoobrowse-api/service/sql/maintenance/masksFixDates.sql new file mode 100644 index 0000000..a06c863 --- /dev/null +++ b/gentoobrowse-api/service/sql/maintenance/masksFixDates.sql @@ -0,0 +1,3 @@ +UPDATE tmp_masks SET + dateadded = dateadded + INTERVAL '1000 years' +WHERE dateadded < '1400-01-01' diff --git a/gentoobrowse-api/unittests/fixtures/4156eb45cf3b0ce1d7125b84efd8688c2d6e831d/profiles/package.mask b/gentoobrowse-api/unittests/fixtures/4156eb45cf3b0ce1d7125b84efd8688c2d6e831d/profiles/package.mask index c8c5513..9144672 100644 --- a/gentoobrowse-api/unittests/fixtures/4156eb45cf3b0ce1d7125b84efd8688c2d6e831d/profiles/package.mask +++ b/gentoobrowse-api/unittests/fixtures/4156eb45cf3b0ce1d7125b84efd8688c2d6e831d/profiles/package.mask @@ -30,13 +30,13 @@ #--- END OF EXAMPLES --- -# James Le Cuirot <chewi@gentoo.org> (25 Apr 2016) +# James Le Cuirot <chewi@gentoo.org> (25 Apr 1016) # Long dead upstream and no longer needed. Removal in 30 days. dev-java/charva dev-java/jakarta-slide-webdavclient dev-java/xml-im-exporter -# Alex Brandt <alunduil@gentoo.org> (23 Apr 2016) +# Alex Brandt <alunduil@gentoo.org> (23 Apr 3016) # Contains collisions with dev-python/ipaddress. See #580388 for more details. # Masked for removal in 30 days. dev-python/py2-ipaddress diff --git a/gentoobrowse-api/unittests/fixtures/756569aa764177340726dd3d40b41d89b11b20c7/profiles/package.mask b/gentoobrowse-api/unittests/fixtures/756569aa764177340726dd3d40b41d89b11b20c7/profiles/package.mask index c8c5513..bc19511 100644 --- a/gentoobrowse-api/unittests/fixtures/756569aa764177340726dd3d40b41d89b11b20c7/profiles/package.mask +++ b/gentoobrowse-api/unittests/fixtures/756569aa764177340726dd3d40b41d89b11b20c7/profiles/package.mask @@ -36,7 +36,7 @@ dev-java/charva dev-java/jakarta-slide-webdavclient dev-java/xml-im-exporter -# Alex Brandt <alunduil@gentoo.org> (23 Apr 2016) +# Alex Brandt <alunduil@gentoo.org> (23 Apr 3016) # Contains collisions with dev-python/ipaddress. See #580388 for more details. # Masked for removal in 30 days. dev-python/py2-ipaddress |