Trigger expression evaluated and problems managed
This commit is contained in:
parent
ffe0c3def2
commit
b0a0f9290e
3 changed files with 82 additions and 20 deletions
40
problem.go
40
problem.go
|
|
@ -2,10 +2,10 @@ package main
|
|||
|
||||
import (
|
||||
// External
|
||||
// we "git.gibonuddevalla.se/go/wrappederror"
|
||||
we "git.gibonuddevalla.se/go/wrappederror"
|
||||
|
||||
// Standard
|
||||
// "encoding/json"
|
||||
"database/sql"
|
||||
)
|
||||
|
||||
/*
|
||||
|
|
@ -18,3 +18,39 @@ type Problem struct {
|
|||
}
|
||||
*/
|
||||
|
||||
func ProblemStart(trigger Trigger) (err error) {
|
||||
row := service.Db.Conn.QueryRow(`
|
||||
SELECT COUNT(id)
|
||||
FROM problem
|
||||
WHERE
|
||||
trigger_id = $1 AND
|
||||
"end" IS NULL
|
||||
GROUP BY trigger_id
|
||||
`,
|
||||
trigger.ID,
|
||||
)
|
||||
var openProblems int
|
||||
err = row.Scan(&openProblems)
|
||||
if err != nil && err != sql.ErrNoRows {
|
||||
err = we.Wrap(err).WithData(trigger.ID)
|
||||
return
|
||||
}
|
||||
|
||||
// Open up a new problem if no open exists.
|
||||
if openProblems == 0 {
|
||||
_, err = service.Db.Conn.Exec(`INSERT INTO problem(trigger_id) VALUES($1)`, trigger.ID)
|
||||
if err != nil {
|
||||
err = we.Wrap(err).WithData(trigger)
|
||||
}
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func ProblemClose(trigger Trigger) (err error) {
|
||||
_, err = service.Db.Conn.Exec(`UPDATE problem SET "end"=NOW() WHERE trigger_id=$1 AND "end" IS NULL`, trigger.ID)
|
||||
if err != nil {
|
||||
err = we.Wrap(err).WithData(trigger)
|
||||
return
|
||||
}
|
||||
return
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue