Stricter datetime input
This commit is contained in:
parent
3109124a88
commit
ab87da256c
4 changed files with 51 additions and 8 deletions
24
datapoint.go
24
datapoint.go
|
|
@ -120,8 +120,12 @@ func (dp Datapoint) Update() (err error) { // {{{
|
|||
} // }}}
|
||||
|
||||
func DatapointAdd[T any](name string, value T) (err error) { // {{{
|
||||
row := service.Db.Conn.QueryRow(`SELECT id, datatype FROM datapoint WHERE name=$1`, name)
|
||||
type dpRequest = struct {
|
||||
ID int
|
||||
value any
|
||||
}
|
||||
|
||||
row := service.Db.Conn.QueryRow(`SELECT id, datatype FROM datapoint WHERE name=$1`, name)
|
||||
var dpID int
|
||||
var dpType DatapointType
|
||||
|
||||
|
|
@ -140,13 +144,21 @@ func DatapointAdd[T any](name string, value T) (err error) { // {{{
|
|||
case STRING:
|
||||
_, err = service.Db.Conn.Exec(`INSERT INTO datapoint_value(datapoint_id, value_string) VALUES($1, $2)`, dpID, value)
|
||||
case DATETIME:
|
||||
_, err = service.Db.Conn.Exec(`INSERT INTO datapoint_value(datapoint_id, value_datetime) VALUES($1, $2)`, dpID, value)
|
||||
// Time value is required to be a RFC 3339 formatted time string
|
||||
var t time.Time
|
||||
valueStr, ok := any(value).([]byte)
|
||||
if !ok {
|
||||
return werr.New("DATETIME value not a string").WithData(dpRequest{dpID, value})
|
||||
}
|
||||
t, err = stringToTime(string(valueStr))
|
||||
if err != nil {
|
||||
return werr.Wrap(err).WithData(dpRequest{dpID, value}).Log()
|
||||
}
|
||||
|
||||
_, err = service.Db.Conn.Exec(`INSERT INTO datapoint_value(datapoint_id, value_datetime) VALUES($1, $2)`, dpID, t)
|
||||
}
|
||||
if err != nil {
|
||||
err = werr.Wrap(err).WithData(struct {
|
||||
ID int
|
||||
value any
|
||||
}{dpID, value})
|
||||
err = werr.Wrap(err).WithData(dpRequest{dpID, value})
|
||||
return
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue