Mercurial > gemma
changeset 1893:9beff970b107
Track fairway dimension import and delete old data on staging done.
author | Raimund Renkert <raimund.renkert@intevation.de> |
---|---|
date | Fri, 18 Jan 2019 11:26:55 +0100 |
parents | b43ee5f73c05 |
children | d72a1539ef3c |
files | pkg/imports/fd.go |
diffstat | 1 files changed, 16 insertions(+), 10 deletions(-) [+] |
line wrap: on
line diff
--- a/pkg/imports/fd.go Fri Jan 18 10:48:13 2019 +0100 +++ b/pkg/imports/fd.go Fri Jan 18 11:26:55 2019 +0100 @@ -88,6 +88,11 @@ tx *sql.Tx, id int64, ) error { + // Delete the old features. + if _, err := tx.ExecContext(ctx, deleteFairwayDimensionSQL); err != nil { + return err + } + _, err := tx.ExecContext(ctx, fdStageDoneSQL, id) return err } @@ -102,7 +107,7 @@ const ( fdStageDoneSQL = ` UPDATE waterway.fairway_dimensions SET staging_done = true -WHERE id = ( +WHERE id IN ( SELECT key from waterway.track_imports WHERE import_id = $1 AND relation = 'waterway.fairway_dimensions'::regclass)` @@ -117,7 +122,7 @@ DELETE FROM waterway.fairway_dimensions WHERE ST_Covers( (SELECT a FROM resp), - ST_Transform(area::geometry, (SELECT t FROM resp))) + ST_Transform(area::geometry, (SELECT t FROM resp))) AND staging_done = true ` // The ST_MakeValid (line125) and ST_Buffer (line124) are a workarround to @@ -142,7 +147,7 @@ )).geom AS geom ) AS clipped WHERE clipped.geom IS NOT NULL -` +RETURNING id` ) // Do executes the actual fairway dimension import. @@ -196,11 +201,6 @@ } defer insertStmt.Close() - // Delete the old features. - if _, err := tx.ExecContext(ctx, deleteFairwayDimensionSQL); err != nil { - return nil, err - } - var ( unsupported = stringCounter{} missingProperties int @@ -246,7 +246,8 @@ if err := json.Unmarshal(*feature.Geometry.Coordinates, &p); err != nil { return err } - if _, err := insertStmt.ExecContext( + var fdid int64 + if err := insertStmt.QueryRowContext( ctx, p.asWKB(), epsg, @@ -256,10 +257,15 @@ fd.Depth, props.HydroSorDat.Time, fd.SourceOrganization, - ); err != nil { + ).Scan(&fdid); err != nil { feedback.Error("error: %s", err) return err } + // Store for potential later removal. + if err = track(ctx, tx, importID, "waterway.fairway_dimensions", fdid); err != nil { + return err + } + features++ default: unsupported[feature.Geometry.Type]++