comparison pkg/imports/bn.go @ 3164:1de0764f6af4

Use context for preparation of transaction-specific statements
author Tom Gottfried <tom@intevation.de>
date Mon, 06 May 2019 13:33:19 +0200
parents b3c3c5b5b7c1
children 4acbee65275d
comparison
equal deleted inserted replaced
3163:d9903cb34842 3164:1de0764f6af4
255 return err 255 return err
256 } 256 }
257 defer tx.Rollback() 257 defer tx.Rollback()
258 258
259 var found bool 259 var found bool
260 err = tx.Stmt(hasStmt).QueryRowContext(ctx, bn.Bottleneck_id).Scan(&found) 260 err = tx.StmtContext(ctx, hasStmt).QueryRowContext(ctx,
261 bn.Bottleneck_id).Scan(&found)
261 switch { 262 switch {
262 case err == sql.ErrNoRows: 263 case err == sql.ErrNoRows:
263 // This is good. 264 // This is good.
264 case err != nil: 265 case err != nil:
265 return err 266 return err
281 country = string(*bn.Responsible_country) 282 country = string(*bn.Responsible_country)
282 } 283 }
283 284
284 var nid int64 285 var nid int64
285 286
286 err = tx.Stmt(insertStmt).QueryRowContext( 287 err = tx.StmtContext(ctx, insertStmt).QueryRowContext(
287 ctx, 288 ctx,
288 bn.Bottleneck_id, 289 bn.Bottleneck_id,
289 bn.Fk_g_fid, 290 bn.Fk_g_fid,
290 bn.OBJNAM, 291 bn.OBJNAM,
291 bn.NOBJNM, 292 bn.NOBJNM,
307 308
308 if bn.Riverbed != nil { 309 if bn.Riverbed != nil {
309 for _, material := range bn.Riverbed.Material { 310 for _, material := range bn.Riverbed.Material {
310 if material != nil { 311 if material != nil {
311 mat := string(*material) 312 mat := string(*material)
312 if _, err := tx.Stmt(insertMaterialStmt).ExecContext( 313 if _, err := tx.StmtContext(ctx,
314 insertMaterialStmt).ExecContext(
313 ctx, nid, material); err != nil { 315 ctx, nid, material); err != nil {
314 feedback.Warn( 316 feedback.Warn(
315 "Failed to insert riverbed material '%s' for bottleneck '%s'.", 317 "Failed to insert riverbed material '%s' for bottleneck '%s'.",
316 mat, bn.OBJNAM) 318 mat, bn.OBJNAM)
317 feedback.Warn(handleError(err).Error()) 319 feedback.Warn(handleError(err).Error())
318 } 320 }
319 } 321 }
320 } 322 }
321 } 323 }
322 324
323 if _, err := tx.Stmt(trackStmt).ExecContext( 325 if _, err := tx.StmtContext(ctx, trackStmt).ExecContext(
324 ctx, importID, "waterway.bottlenecks", nid, 326 ctx, importID, "waterway.bottlenecks", nid,
325 ); err != nil { 327 ); err != nil {
326 return err 328 return err
327 } 329 }
328 if err = tx.Commit(); err != nil { 330 if err = tx.Commit(); err != nil {