Files

59 lines
1.3 KiB
Go

package hrana
import (
"github.com/tursodatabase/libsql-client-go/libsql/internal/http/shared"
)
type Stmt struct {
Sql *string `json:"sql,omitempty"`
SqlId *int32 `json:"sql_id,omitempty"`
Args []Value `json:"args,omitempty"`
NamedArgs []NamedArg `json:"named_args,omitempty"`
WantRows bool `json:"want_rows"`
ReplicationIndex *uint64 `json:"replication_index,omitempty"`
}
type NamedArg struct {
Name string `json:"name"`
Value Value `json:"value"`
}
func (s *Stmt) AddArgs(params shared.Params) error {
if len(params.Named()) > 0 {
return s.AddNamedArgs(params.Named())
} else {
return s.AddPositionalArgs(params.Positional())
}
}
func (s *Stmt) AddPositionalArgs(args []any) error {
argValues := make([]Value, len(args))
for idx := range args {
var err error
if argValues[idx], err = ToValue(args[idx]); err != nil {
return err
}
}
s.Args = argValues
return nil
}
func (s *Stmt) AddNamedArgs(args map[string]any) error {
argValues := make([]NamedArg, len(args))
idx := 0
for key, value := range args {
var err error
var v Value
if v, err = ToValue(value); err != nil {
return err
}
argValues[idx] = NamedArg{
Name: key,
Value: v,
}
idx++
}
s.NamedArgs = argValues
return nil
}