Mercurial > gemma
diff pkg/imports/bn.go @ 2999:b3c3c5b5b7c1
Bottleneck import: Import riverbed materials, too.
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Wed, 10 Apr 2019 16:44:30 +0200 |
parents | 41f5ac76d642 |
children | 1de0764f6af4 |
line wrap: on
line diff
--- a/pkg/imports/bn.go Wed Apr 10 16:04:40 2019 +0200 +++ b/pkg/imports/bn.go Wed Apr 10 16:44:30 2019 +0200 @@ -81,6 +81,15 @@ $13 ) RETURNING id` + + insertBottleneckMaterialSQL = ` +INSERT INTO waterway.bottlenecks_riverbed_materials ( + bottleneck_id, + riverbed +) VALUES ( + $1, + $2 +)` ) type bnJobCreator struct{} @@ -187,7 +196,7 @@ feedback.Info("Found %d bottlenecks for import", len(bns)) - var hasStmt, insertStmt, trackStmt *sql.Stmt + var hasStmt, insertStmt, insertMaterialStmt, trackStmt *sql.Stmt for _, x := range []struct { sql string @@ -195,6 +204,7 @@ }{ {hasBottleneckSQL, &hasStmt}, {insertBottleneckSQL, &insertStmt}, + {insertBottleneckMaterialSQL, &insertMaterialStmt}, {trackImportSQL, &trackStmt}, } { var err error @@ -211,7 +221,7 @@ for _, bn := range bns { if err := storeBottleneck( ctx, importID, conn, feedback, bn, &nids, tolerance, - hasStmt, insertStmt, trackStmt); err != nil { + hasStmt, insertStmt, insertMaterialStmt, trackStmt); err != nil { return nil, err } } @@ -237,7 +247,7 @@ bn *ifbn.BottleNeckType, nids *[]string, tolerance float64, - hasStmt, insertStmt, trackStmt *sql.Stmt, + hasStmt, insertStmt, insertMaterialStmt, trackStmt *sql.Stmt, ) error { tx, err := conn.BeginTx(ctx, nil) @@ -295,6 +305,21 @@ return nil } + if bn.Riverbed != nil { + for _, material := range bn.Riverbed.Material { + if material != nil { + mat := string(*material) + if _, err := tx.Stmt(insertMaterialStmt).ExecContext( + ctx, nid, material); err != nil { + feedback.Warn( + "Failed to insert riverbed material '%s' for bottleneck '%s'.", + mat, bn.OBJNAM) + feedback.Warn(handleError(err).Error()) + } + } + } + } + if _, err := tx.Stmt(trackStmt).ExecContext( ctx, importID, "waterway.bottlenecks", nid, ); err != nil {