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.