Mercurial > gemma
comparison pkg/imports/wa.go @ 2758:a996f2ca9fa5
Simplified savepoint handling.
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Thu, 21 Mar 2019 15:43:02 +0100 |
parents | 7cb027be277d |
children | 1b6840093eac |
comparison
equal
deleted
inserted
replaced
2757:74afcd266249 | 2758:a996f2ca9fa5 |
---|---|
198 return nil | 198 return nil |
199 } | 199 } |
200 | 200 |
201 feedback.Info("Using EPSG: %d", epsg) | 201 feedback.Info("Using EPSG: %d", epsg) |
202 | 202 |
203 const featureSavepoint = "feature" | 203 savepoint := Savepoint(ctx, tx, "feature") |
204 | 204 |
205 for _, feature := range rfc.Features { | 205 for _, feature := range rfc.Features { |
206 if feature.Properties == nil || feature.Geometry.Coordinates == nil { | 206 if feature.Properties == nil || feature.Geometry.Coordinates == nil { |
207 missingProperties++ | 207 missingProperties++ |
208 continue | 208 continue |
232 case "Polygon": | 232 case "Polygon": |
233 var p polygonSlice | 233 var p polygonSlice |
234 if err := json.Unmarshal(*feature.Geometry.Coordinates, &p); err != nil { | 234 if err := json.Unmarshal(*feature.Geometry.Coordinates, &p); err != nil { |
235 return err | 235 return err |
236 } | 236 } |
237 if err := Savepoint(ctx, tx, featureSavepoint); err != nil { | 237 if err := savepoint(func() error { |
238 _, err := insertStmt.ExecContext( | |
239 ctx, | |
240 p.asWKB(), | |
241 epsg, | |
242 catccl, | |
243 dirimp, | |
244 ) | |
238 return err | 245 return err |
239 } | 246 }); err != nil { |
240 if _, err := insertStmt.ExecContext( | |
241 ctx, | |
242 p.asWKB(), | |
243 epsg, | |
244 catccl, | |
245 dirimp, | |
246 ); err != nil { | |
247 feedback.Warn(handleError(err).Error()) | 247 feedback.Warn(handleError(err).Error()) |
248 if err = RollbackToSavepoint(ctx, tx, featureSavepoint); err != nil { | |
249 return err | |
250 } | |
251 } else { | 248 } else { |
252 if err = ReleaseSavepoint(ctx, tx, featureSavepoint); err != nil { | |
253 return err | |
254 } | |
255 features++ | 249 features++ |
256 } | 250 } |
257 default: | 251 default: |
258 unsupported[feature.Geometry.Type]++ | 252 unsupported[feature.Geometry.Type]++ |
259 } | 253 } |