Mercurial > gemma
changeset 1580:c503d2fa9776
Bottleneck import: Use a prepared statement for import tracking, too.
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Thu, 13 Dec 2018 14:06:48 +0100 |
parents | b5d7770fe632 |
children | 8e8523282853 |
files | pkg/imports/bn.go |
diffstat | 1 files changed, 21 insertions(+), 11 deletions(-) [+] |
line wrap: on
line diff
--- a/pkg/imports/bn.go Thu Dec 13 13:41:27 2018 +0100 +++ b/pkg/imports/bn.go Thu Dec 13 14:06:48 2018 +0100 @@ -163,16 +163,22 @@ } defer tx.Rollback() - hasStmt, err := tx.PrepareContext(ctx, hasBottleneckSQL) - if err != nil { - return nil, err + var hasStmt, insertStmt, trackStmt *sql.Stmt + + for _, x := range []struct { + sql string + stmt **sql.Stmt + }{ + {hasBottleneckSQL, &hasStmt}, + {insertSQL, &insertStmt}, + {trackImportSQL, &trackStmt}, + } { + var err error + if *x.stmt, err = tx.PrepareContext(ctx, x.sql); err != nil { + return nil, err + } + defer (*x.stmt).Close() } - defer hasStmt.Close() - insertStmt, err := tx.PrepareContext(ctx, insertSQL) - if err != nil { - return nil, err - } - defer insertStmt.Close() var nids []int64 @@ -189,6 +195,7 @@ case err != nil: return nil, err case found: + // TODO: Deep comparison database vs. SOAP. continue nextBN } @@ -225,10 +232,13 @@ return nil, err } nids = append(nids, nid) - feedback.Info("Inserted '%s'into database", bn.OBJNAM) - if err := track(ctx, tx, importID, "waterway.bottlenecks", nid); err != nil { + if _, err := trackStmt.ExecContext( + ctx, + tx, importID, "waterway.bottlenecks", nid, + ); err != nil { return nil, err } + feedback.Info("Inserted '%s'into database", bn.OBJNAM) } if len(nids) == 0 { feedback.Error("No new bottlenecks found")