Mercurial > gemma
comparison pkg/imports/bn.go @ 4058:6c5c15b2fb64
Database errors have to be handled elsewhere than in imports, too
author | Tom Gottfried <tom@intevation.de> |
---|---|
date | Thu, 25 Jul 2019 09:12:53 +0200 |
parents | aa7bede70b96 |
children | 6c760abcff0e |
comparison
equal
deleted
inserted
replaced
4057:b79b60c0cc5a | 4058:6c5c15b2fb64 |
---|---|
22 "regexp" | 22 "regexp" |
23 "strconv" | 23 "strconv" |
24 "strings" | 24 "strings" |
25 "time" | 25 "time" |
26 | 26 |
27 "gemma.intevation.de/gemma/pkg/common" | |
27 "gemma.intevation.de/gemma/pkg/soap/ifbn" | 28 "gemma.intevation.de/gemma/pkg/soap/ifbn" |
28 "github.com/jackc/pgx/pgtype" | 29 "github.com/jackc/pgx/pgtype" |
29 ) | 30 ) |
30 | 31 |
31 // Bottleneck is an import job to import | 32 // Bottleneck is an import job to import |
588 bn.Source, | 589 bn.Source, |
589 tolerance, | 590 tolerance, |
590 ) | 591 ) |
591 } | 592 } |
592 if err != nil { | 593 if err != nil { |
593 feedback.Warn(handleError(err).Error()) | 594 feedback.Warn(common.HandlePGError(err).Error()) |
594 return nil | 595 return nil |
595 } | 596 } |
596 defer bns.Close() | 597 defer bns.Close() |
597 for bns.Next() { | 598 for bns.Next() { |
598 var nid int64 | 599 var nid int64 |
600 return err | 601 return err |
601 } | 602 } |
602 bnIds = append(bnIds, nid) | 603 bnIds = append(bnIds, nid) |
603 } | 604 } |
604 if err := bns.Err(); err != nil { | 605 if err := bns.Err(); err != nil { |
605 feedback.Warn(handleError(err).Error()) | 606 feedback.Warn(common.HandlePGError(err).Error()) |
606 return nil | 607 return nil |
607 } | 608 } |
608 if len(bnIds) == 0 { | 609 if len(bnIds) == 0 { |
609 feedback.Warn( | 610 feedback.Warn( |
610 "No gauge matching '%s' or given time available", bn.Fk_g_fid) | 611 "No gauge matching '%s' or given time available", bn.Fk_g_fid) |
617 if _, err = tx.StmtContext(ctx, deleteObsoleteBNStmt).ExecContext(ctx, | 618 if _, err = tx.StmtContext(ctx, deleteObsoleteBNStmt).ExecContext(ctx, |
618 bn.Bottleneck_id, | 619 bn.Bottleneck_id, |
619 &validity, | 620 &validity, |
620 &pgBnIds, | 621 &pgBnIds, |
621 ); err != nil { | 622 ); err != nil { |
622 feedback.Warn(handleError(err).Error()) | 623 feedback.Warn(common.HandlePGError(err).Error()) |
623 if err2 := tx.Rollback(); err2 != nil { | 624 if err2 := tx.Rollback(); err2 != nil { |
624 return err2 | 625 return err2 |
625 } | 626 } |
626 return nil | 627 return nil |
627 } | 628 } |
630 // in case of overlap | 631 // in case of overlap |
631 if _, err = tx.StmtContext(ctx, fixValidityStmt).ExecContext(ctx, | 632 if _, err = tx.StmtContext(ctx, fixValidityStmt).ExecContext(ctx, |
632 bn.Bottleneck_id, | 633 bn.Bottleneck_id, |
633 validity, | 634 validity, |
634 ); err != nil { | 635 ); err != nil { |
635 feedback.Warn(handleError(err).Error()) | 636 feedback.Warn(common.HandlePGError(err).Error()) |
636 if err2 := tx.Rollback(); err2 != nil { | 637 if err2 := tx.Rollback(); err2 != nil { |
637 return err2 | 638 return err2 |
638 } | 639 } |
639 return nil | 640 return nil |
640 } | 641 } |
667 if _, err := tx.StmtContext(ctx, insertMaterialStmt).ExecContext(ctx, | 668 if _, err := tx.StmtContext(ctx, insertMaterialStmt).ExecContext(ctx, |
668 &pgBnIds, | 669 &pgBnIds, |
669 &pgMaterials, | 670 &pgMaterials, |
670 ); err != nil { | 671 ); err != nil { |
671 feedback.Warn("Failed to insert riverbed materials") | 672 feedback.Warn("Failed to insert riverbed materials") |
672 feedback.Warn(handleError(err).Error()) | 673 feedback.Warn(common.HandlePGError(err).Error()) |
673 return nil | 674 return nil |
674 } | 675 } |
675 } | 676 } |
676 | 677 |
677 // Only add new BN data to tracking for staging review. | 678 // Only add new BN data to tracking for staging review. |