changeset 3551:a5448426e4e2

Only erase gauges that have been requested from ERDMS
author Tom Gottfried <tom@intevation.de>
date Fri, 31 May 2019 14:16:48 +0200
parents c0f8f9ba21a7
children ffc8fb059d1a
files pkg/imports/dmv.go pkg/imports/erdms.go pkg/imports/wg.go
diffstat 3 files changed, 16 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/pkg/imports/dmv.go	Fri May 31 13:59:54 2019 +0200
+++ b/pkg/imports/dmv.go	Fri May 31 14:16:48 2019 +0200
@@ -87,7 +87,7 @@
 
 	start := time.Now()
 
-	responseData, err := getRisData(
+	responseData, _, err := getRisData(
 		ctx,
 		conn,
 		feedback,
--- a/pkg/imports/erdms.go	Fri May 31 13:59:54 2019 +0200
+++ b/pkg/imports/erdms.go	Fri May 31 14:16:48 2019 +0200
@@ -65,11 +65,11 @@
 	URL string,
 	insecure bool,
 	funcode string,
-) ([]*erdms.GetRisDataXMLResponse, error) {
+) ([]*erdms.GetRisDataXMLResponse, []string, error) {
 
 	countries, err := userCountries(ctx, conn)
 	if err != nil {
-		return nil, err
+		return nil, nil, err
 	}
 
 	var auth *soap.BasicAuth
@@ -106,7 +106,8 @@
 				tries++
 				goto again
 			}
-			return nil, fmt.Errorf("Error requesting ERDMS service: %v", err)
+			return nil, nil, fmt.Errorf(
+				"Error requesting ERDMS service: %v", err)
 		}
 		responseData = append(responseData, data)
 	}
@@ -114,5 +115,5 @@
 	feedback.Info("Import data for countries: %s.",
 		strings.Join(countries, ", "))
 
-	return responseData, nil
+	return responseData, countries, nil
 }
--- a/pkg/imports/wg.go	Fri May 31 13:59:54 2019 +0200
+++ b/pkg/imports/wg.go	Fri May 31 14:16:48 2019 +0200
@@ -67,7 +67,9 @@
 const (
 	eraseObsoleteGaugesSQL = `
 UPDATE waterway.gauges SET erased = true
-WHERE NOT erased AND isrs_astext(location) <> ALL($1)
+WHERE NOT erased
+  AND (location).country_code = ANY($1)
+  AND isrs_astext(location) <> ALL($2)
 RETURNING isrs_astext(location)
 `
 
@@ -184,7 +186,7 @@
 
 	start := time.Now()
 
-	responseData, err := getRisData(
+	responseData, countries, err := getRisData(
 		ctx,
 		conn,
 		feedback,
@@ -515,9 +517,13 @@
 		return nil, UnchangedError("No gauges returned from ERDMS")
 	}
 
-	var pgGauges pgtype.VarcharArray
+	var pgCountries, pgGauges pgtype.VarcharArray
+	pgCountries.Set(countries)
 	pgGauges.Set(gauges)
-	obsGauges, err := conn.QueryContext(ctx, eraseObsoleteGaugesSQL, &pgGauges)
+	obsGauges, err := conn.QueryContext(ctx,
+		eraseObsoleteGaugesSQL,
+		&pgCountries,
+		&pgGauges)
 	if err != nil {
 		return nil, err
 	}