Mercurial > gemma
changeset 2961:5bc941d9ec43
Fix checking of depth reference for sounding result
Depth references have to match any depth reference associated with
the bottlenecks reference gauge. However, these cannot necessarily
be expected to be also in depth_references.
author | Tom Gottfried <tom@intevation.de> |
---|---|
date | Mon, 08 Apr 2019 16:27:37 +0200 |
parents | 41cdff9b7f4a |
children | 8d825551bc72 |
files | pkg/models/sr.go |
diffstat | 1 files changed, 18 insertions(+), 13 deletions(-) [+] |
line wrap: on
line diff
--- a/pkg/models/sr.go Mon Apr 08 16:25:17 2019 +0200 +++ b/pkg/models/sr.go Mon Apr 08 16:27:37 2019 +0200 @@ -36,7 +36,12 @@ const ( checkDepthReferenceSQL = ` -SELECT true FROM depth_references WHERE depth_reference = $1` +SELECT EXISTS(SELECT 1 + FROM waterway.bottlenecks bn + JOIN waterway.gauges g ON g.location = bn.fk_g_fid + JOIN waterway.gauges_reference_water_levels rl ON rl.gauge_id = g.location + WHERE bn.objnam = $1 + AND rl.depth_reference = $2)` checkBottleneckSQL = ` SELECT true FROM waterway.bottlenecks WHERE objnam = $1` @@ -61,18 +66,6 @@ var b bool err := conn.QueryRowContext(ctx, - checkDepthReferenceSQL, - m.DepthReference).Scan(&b) - switch { - case err == sql.ErrNoRows: - errs = append(errs, fmt.Errorf("unknown depth reference '%s'", m.DepthReference)) - case err != nil: - errs = append(errs, err) - case !b: - errs = append(errs, errors.New("unexpected depth reference")) - } - - err = conn.QueryRowContext(ctx, checkBottleneckSQL, m.Bottleneck).Scan(&b) switch { @@ -85,6 +78,18 @@ } err = conn.QueryRowContext(ctx, + checkDepthReferenceSQL, + m.Bottleneck, + m.DepthReference).Scan(&b) + switch { + case !b: + errs = append(errs, + fmt.Errorf("unknown depth reference '%s'", m.DepthReference)) + case err != nil: + errs = append(errs, err) + } + + err = conn.QueryRowContext(ctx, checkBottleneckDateUniqueSQL, m.Bottleneck, m.Date.Time).Scan(&b) switch {