changeset 1978:0a8fa6893181

Import: Upsert gauge measurement data to avoid unique contraint violation.
author Raimund Renkert <raimund.renkert@intevation.de>
date Wed, 23 Jan 2019 12:09:23 +0100
parents 53c1383dfee3
children 0bc0312105e4
files pkg/imports/gm.go
diffstat 1 files changed, 19 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/pkg/imports/gm.go	Wed Jan 23 11:59:18 2019 +0100
+++ b/pkg/imports/gm.go	Wed Jan 23 12:09:23 2019 +0100
@@ -50,6 +50,9 @@
 FROM waterway.gauges
 WHERE (location).country_code = users.current_user_country()`
 
+	// TODO: Currently this statement updates existing data sets. In case we want
+	// 'historization' we need to develop an other mechanism to keep existing
+	// data.
 	insertGMSQL = `
 INSERT INTO waterway.gauge_measurements (
   fk_gauge_id,
@@ -84,7 +87,22 @@
   $18,
   $19
 )
-RETURNING id`
+ON CONFLICT ON CONSTRAINT gauge_measurements_fk_gauge_id_measure_date_staging_done_key
+DO UPDATE SET
+country_code = EXCLUDED.country_code,
+sender = EXCLUDED.sender,
+language_code = EXCLUDED.language_code,
+date_issue = EXCLUDED.date_issue,
+reference_code= EXCLUDED.reference_code,
+water_level = EXCLUDED.water_level,
+predicted = EXCLUDED.predicted,
+is_waterlevel = EXCLUDED.is_waterlevel,
+value_min = EXCLUDED.value_min,
+value_max = EXCLUDED.value_max,
+date_info = EXCLUDED.date_info,
+source_organization = EXCLUDED.source_organization
+RETURNING id
+`
 )
 
 type gmJobCreator struct{}