2024-04-29 08:36:13 +02:00
|
|
|
package main
|
|
|
|
|
|
|
|
import (
|
|
|
|
// External
|
2024-04-30 21:23:05 +02:00
|
|
|
we "git.gibonuddevalla.se/go/wrappederror"
|
2024-04-29 08:36:13 +02:00
|
|
|
|
|
|
|
// Standard
|
2024-04-30 21:23:05 +02:00
|
|
|
"database/sql"
|
2024-04-29 08:36:13 +02:00
|
|
|
)
|
|
|
|
|
|
|
|
/*
|
|
|
|
type Problem struct {
|
|
|
|
ID int
|
|
|
|
Name string
|
|
|
|
SectionID int
|
|
|
|
Expression string
|
|
|
|
DatapointNames []string
|
|
|
|
}
|
|
|
|
*/
|
|
|
|
|
2024-04-30 21:23:05 +02:00
|
|
|
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
|
|
|
|
}
|