Switched to purer libraries

This commit is contained in:
Magnus Åhall 2026-08-19 17:53:52 +02:00
parent 8fa8bb4c3a
commit 9496947f01
21 changed files with 390 additions and 316 deletions

View file

@ -2,15 +2,16 @@ package main
import (
// External
werr "git.gibonuddevalla.se/go/wrappederror"
werr "git.ahall.se/go/wrappederror"
"github.com/expr-lang/expr"
"github.com/expr-lang/expr/ast"
"github.com/expr-lang/expr/parser"
"github.com/lib/pq"
"github.com/jackc/pgx/v5/pgconn"
// Standard
"database/sql"
"context"
"encoding/json"
"errors"
"fmt"
"strings"
)
@ -45,7 +46,9 @@ func TriggerCreate(sectionID int, name string) (t Trigger, err error) { // {{{
func TriggersRetrieve() (areas []Area, err error) { // {{{
areas = []Area{}
row := service.Db.Conn.QueryRow(`
row := db.QueryRow(
context.Background(),
`
WITH section_triggers AS (
SELECT
s.id AS id,
@ -99,7 +102,9 @@ func TriggersRetrieve() (areas []Area, err error) { // {{{
} // }}}
func TriggersRetrieveByDatapoint(datapointName string) (triggers []Trigger, err error) { // {{{
triggers = []Trigger{}
row := service.Db.Conn.QueryRow(`
row := db.QueryRow(
context.Background(),
`
SELECT jsonb_agg(t.*)
FROM public."trigger" t
WHERE
@ -129,7 +134,7 @@ func TriggersRetrieveByDatapoint(datapointName string) (triggers []Trigger, err
return
} // }}}
func TriggerRetrieve(id int) (trigger Trigger, err error) { // {{{
row := service.Db.Conn.QueryRow(`SELECT to_jsonb(t.*) FROM "trigger" t WHERE id=$1`, id)
row := db.QueryRow(context.Background(), `SELECT to_jsonb(t.*) FROM "trigger" t WHERE id=$1`, id)
var jsonData []byte
err = row.Scan(&jsonData)
if err != nil {
@ -141,7 +146,7 @@ func TriggerRetrieve(id int) (trigger Trigger, err error) { // {{{
return
} // }}}
func TriggerDelete(id int) (err error) { // {{{
_, err = service.Db.Conn.Exec(`DELETE FROM public.trigger WHERE id=$1`, id)
_, err = db.Exec(context.Background(), `DELETE FROM public.trigger WHERE id=$1`, id)
if err != nil {
return werr.Wrap(err).WithData(id)
}
@ -172,8 +177,9 @@ func (t *Trigger) Update() (err error) { // {{{
}
jsonDatapoints, _ := json.Marshal(t.Datapoints)
if t.ID == 0 {
var row *sql.Row
row = service.Db.Conn.QueryRow(`
row := db.QueryRow(
context.Background(),
`
INSERT INTO "trigger"(name, section_id, expression, datapoints)
VALUES($1, $2, $3, $4)
RETURNING id
@ -201,7 +207,9 @@ func (t *Trigger) Update() (err error) { // {{{
return
}
} else {
_, err = service.Db.Conn.Exec(`
_, err = db.Exec(
context.Background(),
`
UPDATE "trigger"
SET
name=$2,
@ -217,20 +225,26 @@ func (t *Trigger) Update() (err error) { // {{{
)
}
if pqErr, ok := err.(*pq.Error); ok {
var pgErr *pgconn.PgError
if errors.As(err, &pgErr) {
err = werr.Wrap(err).WithData(
struct {
Trigger *Trigger
PostgresCode pq.ErrorCode
PostgresCode string
PostgresMsg string
}{
t,
pqErr.Code,
pqErr.Code.Name(),
pgErr.Code,
pgErr.Message,
})
} else if err != nil {
err = werr.Wrap(err).WithData(t)
return
}
if err != nil {
err = werr.Wrap(err).WithData(t)
return
}
return
} // }}}
func (t *Trigger) Run() (output any, err error) { // {{{