Mercurial > gemma
changeset 3529:ba0339118d9c
Improve validation of gauge temporal validity
The current version of a gauge should always have a validity represented
by a non-empty time range. Thus, do not accept empty time ranges on input.
Nevertheless, continue to accept storing empty time ranges (no CHECK
constraint), because a new version with equal start date but longer
validity might still cause the previous version to get an empty time
range.
In passing, add a missing NOT NULL constraint: if both start and end
date are omitted, the range will be unbounded, but it should never
be NULL.
author | Tom Gottfried <tom@intevation.de> |
---|---|
date | Wed, 29 May 2019 16:43:26 +0200 |
parents | b9e331c1e616 |
children | e98ea184538e |
files | pkg/imports/wg.go schema/gemma.sql |
diffstat | 2 files changed, 4 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/pkg/imports/wg.go Wed May 29 16:00:28 2019 +0200 +++ b/pkg/imports/wg.go Wed May 29 16:43:26 2019 +0200 @@ -235,10 +235,10 @@ gauges = append(gauges, isrs) feedback.Info("Processing %s", code) - // We need a valid time range to identify gauge versions in DB + // We need a valid, non-empty time range to identify gauge versions if dr.Enddate != nil && dr.Startdate != nil && - time.Time(*dr.Enddate).Before(time.Time(*dr.Startdate)) { - feedback.Warn("End date before start date") + !time.Time(*dr.Enddate).After(time.Time(*dr.Startdate)) { + feedback.Warn("End date not after start date") unchanged++ continue }
--- a/schema/gemma.sql Wed May 29 16:00:28 2019 +0200 +++ b/schema/gemma.sql Wed May 29 16:43:26 2019 +0200 @@ -280,7 +280,7 @@ geom geography(POINT, 4326) NOT NULL, applicability_from_km int8, applicability_to_km int8, - validity tstzrange, + validity tstzrange NOT NULL, zero_point double precision NOT NULL, geodref varchar, date_info timestamp with time zone NOT NULL,