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
|
||||
} // }}}
|
||||
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)
|
||||
if err != nil {
|
||||
err = werr.Wrap(err).WithData(id)
|
||||
|
Loading…
Reference in New Issue
Block a user