#6, update trigger expressions when renaming datapoints
This commit is contained in:
parent
6685f8bc46
commit
db41d360dc
2 changed files with 63 additions and 9 deletions
40
trigger.go
40
trigger.go
|
|
@ -4,6 +4,8 @@ import (
|
|||
// External
|
||||
werr "git.gibonuddevalla.se/go/wrappederror"
|
||||
"github.com/expr-lang/expr"
|
||||
"github.com/expr-lang/expr/ast"
|
||||
"github.com/expr-lang/expr/parser"
|
||||
"github.com/lib/pq"
|
||||
|
||||
// Standard
|
||||
|
|
@ -22,6 +24,17 @@ type Trigger struct {
|
|||
DatapointValues map[string]any
|
||||
}
|
||||
|
||||
type ExprRenamePatcher struct {
|
||||
OldName string
|
||||
NewName string
|
||||
}
|
||||
|
||||
func (p ExprRenamePatcher) Visit(node *ast.Node) {
|
||||
if n, ok := (*node).(*ast.IdentifierNode); ok && n.Value == p.OldName {
|
||||
ast.Patch(node, &ast.IdentifierNode{Value: p.NewName})
|
||||
}
|
||||
}
|
||||
|
||||
func TriggerCreate(sectionID int, name string) (t Trigger, err error) { // {{{
|
||||
t.SectionID = sectionID
|
||||
t.Name = name
|
||||
|
|
@ -127,6 +140,14 @@ func TriggerRetrieve(id int) (trigger Trigger, err error) { // {{{
|
|||
err = json.Unmarshal(jsonData, &trigger)
|
||||
return
|
||||
} // }}}
|
||||
func TriggerDelete(id int) (err error) { // {{{
|
||||
_, err = service.Db.Conn.Exec(`DELETE FROM public.trigger WHERE id=$1`, id)
|
||||
if err != nil {
|
||||
return werr.Wrap(err).WithData(id)
|
||||
}
|
||||
return
|
||||
} // }}}
|
||||
|
||||
func (t *Trigger) Validate() (ok bool, err error) { // {{{
|
||||
if strings.TrimSpace(t.Name) == "" {
|
||||
err = fmt.Errorf("Name can't be empty")
|
||||
|
|
@ -212,14 +233,6 @@ func (t *Trigger) Update() (err error) { // {{{
|
|||
}
|
||||
return
|
||||
} // }}}
|
||||
func TriggerDelete(id int) (err error) { // {{{
|
||||
_, err = service.Db.Conn.Exec(`DELETE FROM public.trigger WHERE id=$1`, id)
|
||||
if err != nil {
|
||||
return werr.Wrap(err).WithData(id)
|
||||
}
|
||||
return
|
||||
} // }}}
|
||||
|
||||
func (t *Trigger) Run() (output any, err error) { // {{{
|
||||
datapoints := make(map[string]Datapoint)
|
||||
for _, dpname := range t.Datapoints {
|
||||
|
|
@ -248,3 +261,14 @@ func (t *Trigger) Run() (output any, err error) { // {{{
|
|||
}
|
||||
return
|
||||
} // }}}
|
||||
func (t *Trigger) RenameDatapoint(from, to string) error { // {{{
|
||||
tree, err := parser.Parse(t.Expression)
|
||||
if err != nil {
|
||||
return werr.Wrap(err).WithData(t.Expression)
|
||||
}
|
||||
|
||||
ast.Walk(&tree.Node, ExprRenamePatcher{from, to})
|
||||
t.Expression = tree.Node.String()
|
||||
|
||||
return nil
|
||||
} // }}}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue