annotate pkg/imports/dsr.go @ 4400:3b36c4d810b0

Added back end for deletion of sounding results.
author Sascha Wilde <wilde@intevation.de>
date Mon, 16 Sep 2019 16:41:56 +0200
parents pkg/imports/dst.go@024b16a1c253
children 9c6c65a628a3
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
4392
024b16a1c253 Implemented deletion of stretches.
Sascha Wilde <wilde@intevation.de>
parents:
diff changeset
1 // This is Free Software under GNU Affero General Public License v >= 3.0
024b16a1c253 Implemented deletion of stretches.
Sascha Wilde <wilde@intevation.de>
parents:
diff changeset
2 // without warranty, see README.md and license for details.
024b16a1c253 Implemented deletion of stretches.
Sascha Wilde <wilde@intevation.de>
parents:
diff changeset
3 //
024b16a1c253 Implemented deletion of stretches.
Sascha Wilde <wilde@intevation.de>
parents:
diff changeset
4 // SPDX-License-Identifier: AGPL-3.0-or-later
024b16a1c253 Implemented deletion of stretches.
Sascha Wilde <wilde@intevation.de>
parents:
diff changeset
5 // License-Filename: LICENSES/AGPL-3.0.txt
024b16a1c253 Implemented deletion of stretches.
Sascha Wilde <wilde@intevation.de>
parents:
diff changeset
6 //
024b16a1c253 Implemented deletion of stretches.
Sascha Wilde <wilde@intevation.de>
parents:
diff changeset
7 // Copyright (C) 2019 by via donau
024b16a1c253 Implemented deletion of stretches.
Sascha Wilde <wilde@intevation.de>
parents:
diff changeset
8 // – Österreichische Wasserstraßen-Gesellschaft mbH
024b16a1c253 Implemented deletion of stretches.
Sascha Wilde <wilde@intevation.de>
parents:
diff changeset
9 // Software engineering by Intevation GmbH
024b16a1c253 Implemented deletion of stretches.
Sascha Wilde <wilde@intevation.de>
parents:
diff changeset
10 //
024b16a1c253 Implemented deletion of stretches.
Sascha Wilde <wilde@intevation.de>
parents:
diff changeset
11 // Author(s):
024b16a1c253 Implemented deletion of stretches.
Sascha Wilde <wilde@intevation.de>
parents:
diff changeset
12 // * Sascha L. Teichmann <sascha.teichmann@intevation.de>
024b16a1c253 Implemented deletion of stretches.
Sascha Wilde <wilde@intevation.de>
parents:
diff changeset
13 // * Sascha Wilde <wilde@intevation.de>
024b16a1c253 Implemented deletion of stretches.
Sascha Wilde <wilde@intevation.de>
parents:
diff changeset
14
024b16a1c253 Implemented deletion of stretches.
Sascha Wilde <wilde@intevation.de>
parents:
diff changeset
15 package imports
024b16a1c253 Implemented deletion of stretches.
Sascha Wilde <wilde@intevation.de>
parents:
diff changeset
16
024b16a1c253 Implemented deletion of stretches.
Sascha Wilde <wilde@intevation.de>
parents:
diff changeset
17 import (
024b16a1c253 Implemented deletion of stretches.
Sascha Wilde <wilde@intevation.de>
parents:
diff changeset
18 "context"
024b16a1c253 Implemented deletion of stretches.
Sascha Wilde <wilde@intevation.de>
parents:
diff changeset
19 "database/sql"
4400
3b36c4d810b0 Added back end for deletion of sounding results.
Sascha Wilde <wilde@intevation.de>
parents: 4392
diff changeset
20
3b36c4d810b0 Added back end for deletion of sounding results.
Sascha Wilde <wilde@intevation.de>
parents: 4392
diff changeset
21 "gemma.intevation.de/gemma/pkg/models"
4392
024b16a1c253 Implemented deletion of stretches.
Sascha Wilde <wilde@intevation.de>
parents:
diff changeset
22 )
024b16a1c253 Implemented deletion of stretches.
Sascha Wilde <wilde@intevation.de>
parents:
diff changeset
23
4400
3b36c4d810b0 Added back end for deletion of sounding results.
Sascha Wilde <wilde@intevation.de>
parents: 4392
diff changeset
24 // DeleteSoundingResult is a Job to delete a sounding result from the database.
3b36c4d810b0 Added back end for deletion of sounding results.
Sascha Wilde <wilde@intevation.de>
parents: 4392
diff changeset
25 type DeleteSoundingResult struct {
3b36c4d810b0 Added back end for deletion of sounding results.
Sascha Wilde <wilde@intevation.de>
parents: 4392
diff changeset
26 BottleneckId string `json:"bottleneck-id"`
3b36c4d810b0 Added back end for deletion of sounding results.
Sascha Wilde <wilde@intevation.de>
parents: 4392
diff changeset
27 Date models.Date `json:"date-info"`
4392
024b16a1c253 Implemented deletion of stretches.
Sascha Wilde <wilde@intevation.de>
parents:
diff changeset
28 }
024b16a1c253 Implemented deletion of stretches.
Sascha Wilde <wilde@intevation.de>
parents:
diff changeset
29
4400
3b36c4d810b0 Added back end for deletion of sounding results.
Sascha Wilde <wilde@intevation.de>
parents: 4392
diff changeset
30 // DSRJobKind is the import queue type identifier.
3b36c4d810b0 Added back end for deletion of sounding results.
Sascha Wilde <wilde@intevation.de>
parents: 4392
diff changeset
31 const DSRJobKind JobKind = "dsr"
4392
024b16a1c253 Implemented deletion of stretches.
Sascha Wilde <wilde@intevation.de>
parents:
diff changeset
32
4400
3b36c4d810b0 Added back end for deletion of sounding results.
Sascha Wilde <wilde@intevation.de>
parents: 4392
diff changeset
33 type dsrJobCreator struct{}
4392
024b16a1c253 Implemented deletion of stretches.
Sascha Wilde <wilde@intevation.de>
parents:
diff changeset
34
4400
3b36c4d810b0 Added back end for deletion of sounding results.
Sascha Wilde <wilde@intevation.de>
parents: 4392
diff changeset
35 func init() { RegisterJobCreator(DSRJobKind, dsrJobCreator{}) }
4392
024b16a1c253 Implemented deletion of stretches.
Sascha Wilde <wilde@intevation.de>
parents:
diff changeset
36
4400
3b36c4d810b0 Added back end for deletion of sounding results.
Sascha Wilde <wilde@intevation.de>
parents: 4392
diff changeset
37 func (dsrJobCreator) Description() string { return "delete sounding result" }
4392
024b16a1c253 Implemented deletion of stretches.
Sascha Wilde <wilde@intevation.de>
parents:
diff changeset
38
4400
3b36c4d810b0 Added back end for deletion of sounding results.
Sascha Wilde <wilde@intevation.de>
parents: 4392
diff changeset
39 func (dsrJobCreator) AutoAccept() bool { return false }
4392
024b16a1c253 Implemented deletion of stretches.
Sascha Wilde <wilde@intevation.de>
parents:
diff changeset
40
4400
3b36c4d810b0 Added back end for deletion of sounding results.
Sascha Wilde <wilde@intevation.de>
parents: 4392
diff changeset
41 func (dsrJobCreator) Create() Job { return new(DeleteSoundingResult) }
4392
024b16a1c253 Implemented deletion of stretches.
Sascha Wilde <wilde@intevation.de>
parents:
diff changeset
42
4400
3b36c4d810b0 Added back end for deletion of sounding results.
Sascha Wilde <wilde@intevation.de>
parents: 4392
diff changeset
43 func (dsrJobCreator) Depends() [2][]string {
4392
024b16a1c253 Implemented deletion of stretches.
Sascha Wilde <wilde@intevation.de>
parents:
diff changeset
44 return [2][]string{
4400
3b36c4d810b0 Added back end for deletion of sounding results.
Sascha Wilde <wilde@intevation.de>
parents: 4392
diff changeset
45 {"sounding resultes"},
4392
024b16a1c253 Implemented deletion of stretches.
Sascha Wilde <wilde@intevation.de>
parents:
diff changeset
46 {},
024b16a1c253 Implemented deletion of stretches.
Sascha Wilde <wilde@intevation.de>
parents:
diff changeset
47 }
024b16a1c253 Implemented deletion of stretches.
Sascha Wilde <wilde@intevation.de>
parents:
diff changeset
48 }
024b16a1c253 Implemented deletion of stretches.
Sascha Wilde <wilde@intevation.de>
parents:
diff changeset
49
024b16a1c253 Implemented deletion of stretches.
Sascha Wilde <wilde@intevation.de>
parents:
diff changeset
50 const (
4400
3b36c4d810b0 Added back end for deletion of sounding results.
Sascha Wilde <wilde@intevation.de>
parents: 4392
diff changeset
51 dsrFindSQL = `
3b36c4d810b0 Added back end for deletion of sounding results.
Sascha Wilde <wilde@intevation.de>
parents: 4392
diff changeset
52 SELECT id FROM waterway.sounding_results
3b36c4d810b0 Added back end for deletion of sounding results.
Sascha Wilde <wilde@intevation.de>
parents: 4392
diff changeset
53 WHERE bottleneck_id = $1
3b36c4d810b0 Added back end for deletion of sounding results.
Sascha Wilde <wilde@intevation.de>
parents: 4392
diff changeset
54 AND date_info = $2
3b36c4d810b0 Added back end for deletion of sounding results.
Sascha Wilde <wilde@intevation.de>
parents: 4392
diff changeset
55 AND staging_done
4392
024b16a1c253 Implemented deletion of stretches.
Sascha Wilde <wilde@intevation.de>
parents:
diff changeset
56 `
4400
3b36c4d810b0 Added back end for deletion of sounding results.
Sascha Wilde <wilde@intevation.de>
parents: 4392
diff changeset
57 dsrStageDoneSQL = `
3b36c4d810b0 Added back end for deletion of sounding results.
Sascha Wilde <wilde@intevation.de>
parents: 4392
diff changeset
58 DELETE FROM waterway.sounding_results
4392
024b16a1c253 Implemented deletion of stretches.
Sascha Wilde <wilde@intevation.de>
parents:
diff changeset
59 WHERE id IN (
024b16a1c253 Implemented deletion of stretches.
Sascha Wilde <wilde@intevation.de>
parents:
diff changeset
60 SELECT key from import.track_imports
024b16a1c253 Implemented deletion of stretches.
Sascha Wilde <wilde@intevation.de>
parents:
diff changeset
61 WHERE import_id = $1 AND
024b16a1c253 Implemented deletion of stretches.
Sascha Wilde <wilde@intevation.de>
parents:
diff changeset
62 deletion AND
4400
3b36c4d810b0 Added back end for deletion of sounding results.
Sascha Wilde <wilde@intevation.de>
parents: 4392
diff changeset
63 relation = 'waterway.sounding_results'::regclass)`
4392
024b16a1c253 Implemented deletion of stretches.
Sascha Wilde <wilde@intevation.de>
parents:
diff changeset
64 )
024b16a1c253 Implemented deletion of stretches.
Sascha Wilde <wilde@intevation.de>
parents:
diff changeset
65
4400
3b36c4d810b0 Added back end for deletion of sounding results.
Sascha Wilde <wilde@intevation.de>
parents: 4392
diff changeset
66 // StageDone finally removes the sounding result from the database.
3b36c4d810b0 Added back end for deletion of sounding results.
Sascha Wilde <wilde@intevation.de>
parents: 4392
diff changeset
67 func (dsrJobCreator) StageDone(
4392
024b16a1c253 Implemented deletion of stretches.
Sascha Wilde <wilde@intevation.de>
parents:
diff changeset
68 ctx context.Context,
024b16a1c253 Implemented deletion of stretches.
Sascha Wilde <wilde@intevation.de>
parents:
diff changeset
69 tx *sql.Tx,
024b16a1c253 Implemented deletion of stretches.
Sascha Wilde <wilde@intevation.de>
parents:
diff changeset
70 id int64,
024b16a1c253 Implemented deletion of stretches.
Sascha Wilde <wilde@intevation.de>
parents:
diff changeset
71 ) error {
4400
3b36c4d810b0 Added back end for deletion of sounding results.
Sascha Wilde <wilde@intevation.de>
parents: 4392
diff changeset
72 _, err := tx.ExecContext(ctx, dsrStageDoneSQL, id)
4392
024b16a1c253 Implemented deletion of stretches.
Sascha Wilde <wilde@intevation.de>
parents:
diff changeset
73 return err
024b16a1c253 Implemented deletion of stretches.
Sascha Wilde <wilde@intevation.de>
parents:
diff changeset
74 }
024b16a1c253 Implemented deletion of stretches.
Sascha Wilde <wilde@intevation.de>
parents:
diff changeset
75
4400
3b36c4d810b0 Added back end for deletion of sounding results.
Sascha Wilde <wilde@intevation.de>
parents: 4392
diff changeset
76 // CleanUp of a sounding result delete import is a NOP.
3b36c4d810b0 Added back end for deletion of sounding results.
Sascha Wilde <wilde@intevation.de>
parents: 4392
diff changeset
77 func (*DeleteSoundingResult) CleanUp() error { return nil }
4392
024b16a1c253 Implemented deletion of stretches.
Sascha Wilde <wilde@intevation.de>
parents:
diff changeset
78
4400
3b36c4d810b0 Added back end for deletion of sounding results.
Sascha Wilde <wilde@intevation.de>
parents: 4392
diff changeset
79 // Do prepares the deletion of the sounding result.
3b36c4d810b0 Added back end for deletion of sounding results.
Sascha Wilde <wilde@intevation.de>
parents: 4392
diff changeset
80 func (dsr *DeleteSoundingResult) Do(
4392
024b16a1c253 Implemented deletion of stretches.
Sascha Wilde <wilde@intevation.de>
parents:
diff changeset
81 ctx context.Context,
024b16a1c253 Implemented deletion of stretches.
Sascha Wilde <wilde@intevation.de>
parents:
diff changeset
82 importID int64,
024b16a1c253 Implemented deletion of stretches.
Sascha Wilde <wilde@intevation.de>
parents:
diff changeset
83 conn *sql.Conn,
024b16a1c253 Implemented deletion of stretches.
Sascha Wilde <wilde@intevation.de>
parents:
diff changeset
84 feedback Feedback,
024b16a1c253 Implemented deletion of stretches.
Sascha Wilde <wilde@intevation.de>
parents:
diff changeset
85 ) (interface{}, error) {
024b16a1c253 Implemented deletion of stretches.
Sascha Wilde <wilde@intevation.de>
parents:
diff changeset
86
024b16a1c253 Implemented deletion of stretches.
Sascha Wilde <wilde@intevation.de>
parents:
diff changeset
87 tx, err := conn.BeginTx(ctx, nil)
024b16a1c253 Implemented deletion of stretches.
Sascha Wilde <wilde@intevation.de>
parents:
diff changeset
88 if err != nil {
024b16a1c253 Implemented deletion of stretches.
Sascha Wilde <wilde@intevation.de>
parents:
diff changeset
89 return nil, err
024b16a1c253 Implemented deletion of stretches.
Sascha Wilde <wilde@intevation.de>
parents:
diff changeset
90 }
024b16a1c253 Implemented deletion of stretches.
Sascha Wilde <wilde@intevation.de>
parents:
diff changeset
91 defer tx.Rollback()
024b16a1c253 Implemented deletion of stretches.
Sascha Wilde <wilde@intevation.de>
parents:
diff changeset
92
4400
3b36c4d810b0 Added back end for deletion of sounding results.
Sascha Wilde <wilde@intevation.de>
parents: 4392
diff changeset
93 feedback.Info("SR: bottleneck-id: %v, date-info: %v",
3b36c4d810b0 Added back end for deletion of sounding results.
Sascha Wilde <wilde@intevation.de>
parents: 4392
diff changeset
94 dsr.BottleneckId, dsr.Date.Time)
3b36c4d810b0 Added back end for deletion of sounding results.
Sascha Wilde <wilde@intevation.de>
parents: 4392
diff changeset
95
3b36c4d810b0 Added back end for deletion of sounding results.
Sascha Wilde <wilde@intevation.de>
parents: 4392
diff changeset
96 var id int64
3b36c4d810b0 Added back end for deletion of sounding results.
Sascha Wilde <wilde@intevation.de>
parents: 4392
diff changeset
97 if err := tx.QueryRowContext(ctx, dsrFindSQL,
3b36c4d810b0 Added back end for deletion of sounding results.
Sascha Wilde <wilde@intevation.de>
parents: 4392
diff changeset
98 dsr.BottleneckId, dsr.Date.Time).Scan(&id); err != nil {
4392
024b16a1c253 Implemented deletion of stretches.
Sascha Wilde <wilde@intevation.de>
parents:
diff changeset
99 return nil, err
024b16a1c253 Implemented deletion of stretches.
Sascha Wilde <wilde@intevation.de>
parents:
diff changeset
100 }
024b16a1c253 Implemented deletion of stretches.
Sascha Wilde <wilde@intevation.de>
parents:
diff changeset
101
4400
3b36c4d810b0 Added back end for deletion of sounding results.
Sascha Wilde <wilde@intevation.de>
parents: 4392
diff changeset
102 feedback.Info("Prepare deletion of sounding result with id %d", id)
4392
024b16a1c253 Implemented deletion of stretches.
Sascha Wilde <wilde@intevation.de>
parents:
diff changeset
103
024b16a1c253 Implemented deletion of stretches.
Sascha Wilde <wilde@intevation.de>
parents:
diff changeset
104 if _, err := tx.ExecContext(
024b16a1c253 Implemented deletion of stretches.
Sascha Wilde <wilde@intevation.de>
parents:
diff changeset
105 ctx,
024b16a1c253 Implemented deletion of stretches.
Sascha Wilde <wilde@intevation.de>
parents:
diff changeset
106 trackImportDeletionSQL,
024b16a1c253 Implemented deletion of stretches.
Sascha Wilde <wilde@intevation.de>
parents:
diff changeset
107 importID,
4400
3b36c4d810b0 Added back end for deletion of sounding results.
Sascha Wilde <wilde@intevation.de>
parents: 4392
diff changeset
108 "waterway.sounding_results",
3b36c4d810b0 Added back end for deletion of sounding results.
Sascha Wilde <wilde@intevation.de>
parents: 4392
diff changeset
109 id,
4392
024b16a1c253 Implemented deletion of stretches.
Sascha Wilde <wilde@intevation.de>
parents:
diff changeset
110 true,
024b16a1c253 Implemented deletion of stretches.
Sascha Wilde <wilde@intevation.de>
parents:
diff changeset
111 ); err != nil {
024b16a1c253 Implemented deletion of stretches.
Sascha Wilde <wilde@intevation.de>
parents:
diff changeset
112 return nil, err
024b16a1c253 Implemented deletion of stretches.
Sascha Wilde <wilde@intevation.de>
parents:
diff changeset
113 }
024b16a1c253 Implemented deletion of stretches.
Sascha Wilde <wilde@intevation.de>
parents:
diff changeset
114
024b16a1c253 Implemented deletion of stretches.
Sascha Wilde <wilde@intevation.de>
parents:
diff changeset
115 if err := tx.Commit(); err != nil {
024b16a1c253 Implemented deletion of stretches.
Sascha Wilde <wilde@intevation.de>
parents:
diff changeset
116 return nil, err
024b16a1c253 Implemented deletion of stretches.
Sascha Wilde <wilde@intevation.de>
parents:
diff changeset
117 }
024b16a1c253 Implemented deletion of stretches.
Sascha Wilde <wilde@intevation.de>
parents:
diff changeset
118
4400
3b36c4d810b0 Added back end for deletion of sounding results.
Sascha Wilde <wilde@intevation.de>
parents: 4392
diff changeset
119 return dsr, nil
4392
024b16a1c253 Implemented deletion of stretches.
Sascha Wilde <wilde@intevation.de>
parents:
diff changeset
120 }