Managing of problems

This commit is contained in:
Magnus Åhall 2024-05-01 20:01:43 +02:00
parent c746343dc0
commit d935eb282b
15 changed files with 588 additions and 36 deletions

View file

@ -6,17 +6,61 @@ import (
// Standard
"database/sql"
"encoding/json"
"time"
)
/*
type Problem struct {
ID int
Name string
SectionID int
Expression string
DatapointNames []string
ID int
Start time.Time
End sql.NullTime
Acknowledged bool
TriggerID int `json:"trigger_id"`
TriggerName string `json:"trigger_name"`
AreaName string `json:"area_name"`
SectionName string `json:"section_name"`
}
func ProblemsRetrieve() (problems []Problem, err error) {
problems = []Problem{}
row := service.Db.Conn.QueryRow(`
SELECT
jsonb_agg(p.*)
FROM (
SELECT
p.id,
p.start,
p.end,
p.acknowledged,
t.id AS trigger_id,
t.name AS trigger_name,
a.name AS area_name,
s.name AS section_name
FROM problem p
INNER JOIN "trigger" t ON p.trigger_id = t.id
INNER JOIN section s ON t.section_id = s.id
INNER JOIN area a ON s.area_id = a.id
WHERE
p.end IS NULL
ORDER BY p.start DESC
) p
`)
var jsonBody []byte
err = row.Scan(&jsonBody)
if err != nil {
err = we.Wrap(err)
return
}
err = json.Unmarshal(jsonBody, &problems)
if err != nil {
err = we.Wrap(err)
}
return
}
*/
func ProblemStart(trigger Trigger) (err error) {
row := service.Db.Conn.QueryRow(`
@ -54,3 +98,12 @@ func ProblemClose(trigger Trigger) (err error) {
}
return
}
func ProblemAcknowledge(id int, state bool) (err error) {
_, err = service.Db.Conn.Exec(`UPDATE problem SET "acknowledged"=$2 WHERE id=$1`, id, state)
if err != nil {
err = we.Wrap(err).WithData(id)
return
}
return
}