Don't erase datapoints when used in triggers.
This commit is contained in:
parent
9eecf946f8
commit
68abb894a6
31
datapoint.go
31
datapoint.go
@ -283,6 +283,37 @@ func DatapointRetrieve(id int, name string) (dp Datapoint, err error) { // {{{
|
|||||||
return
|
return
|
||||||
} // }}}
|
} // }}}
|
||||||
func DatapointDelete(id int) (err error) { // {{{
|
func DatapointDelete(id int) (err error) { // {{{
|
||||||
|
var dpName string
|
||||||
|
row := service.Db.Conn.QueryRow(`SELECT name FROM public.datapoint WHERE id = $1`, id)
|
||||||
|
err = row.Scan(&dpName)
|
||||||
|
if err != nil {
|
||||||
|
err = werr.Wrap(err).WithData(id)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
var rows *sql.Rows
|
||||||
|
rows, err = service.Db.Conn.Query(`SELECT name FROM public.trigger WHERE datapoints ? $1`, dpName)
|
||||||
|
if err != nil {
|
||||||
|
err = werr.Wrap(err).WithData(dpName)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
defer rows.Close()
|
||||||
|
|
||||||
|
var triggerNames []string
|
||||||
|
var name string
|
||||||
|
for rows.Next() {
|
||||||
|
err = rows.Scan(&name)
|
||||||
|
if err != nil {
|
||||||
|
err = werr.Wrap(err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
triggerNames = append(triggerNames, name)
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(triggerNames) > 0 {
|
||||||
|
return werr.New("Datapoint '%s' used in the following triggers: %s", dpName, strings.Join(triggerNames, ", "))
|
||||||
|
}
|
||||||
|
|
||||||
_, err = service.Db.Conn.Exec(`DELETE FROM datapoint WHERE id=$1`, id)
|
_, err = service.Db.Conn.Exec(`DELETE FROM datapoint WHERE id=$1`, id)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
err = werr.Wrap(err).WithData(id)
|
err = werr.Wrap(err).WithData(id)
|
||||||
|
Loading…
Reference in New Issue
Block a user