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,