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 }