# HG changeset patch # User Sascha L. Teichmann # Date 1549898195 -3600 # Node ID b27edd1f2353deac047f33b738843ee6f1c597a0 # Parent 7ae0b6be0203c7a3f788eb7677cbe8ddb11b1637 Waterway profiles import: Issue warnings for lines in CSV file which ISRS codes which are not in the virtual distance marks. diff -r 7ae0b6be0203 -r b27edd1f2353 pkg/imports/wp.go --- a/pkg/imports/wp.go Mon Feb 11 15:57:20 2019 +0100 +++ b/pkg/imports/wp.go Mon Feb 11 16:16:35 2019 +0100 @@ -96,6 +96,11 @@ INSERT INTO wp_geoms (geom) VALUES ( ST_Transform(ST_GeomFromWKB($1, $2::int), 4326) )` + hasDistanceMarkSQL = ` +SELECT true FROM waterway.distance_marks_virtual +WHERE location_code = + ($1::char(2), $2::char(3), $3::char(5), $4::char(5), $5::int) +LIMIT 1` insertWaterwayProfileSQL = ` INSERT INTO waterway.waterway_profiles ( @@ -430,6 +435,12 @@ } defer trackStmt.Close() + hasDistanceMarkStmt, err := tx.PrepareContext(ctx, hasDistanceMarkSQL) + if err != nil { + return nil, err + } + defer hasDistanceMarkStmt.Close() + var ids []int64 lines: @@ -450,6 +461,26 @@ line, err) } + var dummy bool + err = hasDistanceMarkStmt.QueryRowContext( + ctx, + location.CountryCode, + location.LoCode, + location.FairwaySection, + location.Orc, + location.Hectometre, + ).Scan(&dummy) + + switch { + case err == sql.ErrNoRows: + feedback.Warn("No virtual distance mark found for %s.", location) + continue lines + case err != nil: + return nil, err + case !dummy: + return nil, errors.New("unexpected result form database") + } + validFromTime, err := parseDate(row[validFromIdx]) if err != nil { return nil, fmt.Errorf(