Add additional methods to Batch similar to what exists on Queryx

This commit is contained in:
Dmitry Kropachev
2024-06-20 00:38:01 -04:00
committed by Sylwia Szunejko
parent 207ba8723e
commit 2eee0b00f1
2 changed files with 160 additions and 38 deletions

View File

@@ -1,6 +1,8 @@
package gocqlx
import (
"fmt"
"github.com/gocql/gocql"
)
@@ -27,6 +29,38 @@ func (b *Batch) BindStruct(qry *Queryx, arg interface{}) error {
return nil
}
// Bind binds query parameters to values from args.
// If value cannot be found an error is reported.
func (b *Batch) Bind(qry *Queryx, args ...interface{}) error {
if len(qry.Names) != len(args) {
return fmt.Errorf("query requires %d arguments, but %d provided", len(qry.Names), len(args))
}
b.Query(qry.Statement(), args...)
return nil
}
// BindMap binds query named parameters to values from arg using a mapper.
// If value cannot be found an error is reported.
func (b *Batch) BindMap(qry *Queryx, arg map[string]interface{}) error {
args, err := qry.bindMapArgs(arg)
if err != nil {
return err
}
b.Query(qry.Statement(), args...)
return nil
}
// BindStructMap binds query named parameters to values from arg0 and arg1 using a mapper.
// If value cannot be found an error is reported.
func (b *Batch) BindStructMap(qry *Queryx, arg0 interface{}, arg1 map[string]interface{}) error {
args, err := qry.bindStructArgs(arg0, arg1)
if err != nil {
return err
}
b.Query(qry.Statement(), args...)
return nil
}
// ExecuteBatch executes a batch operation and returns nil if successful
// otherwise an error describing the failure.
func (s *Session) ExecuteBatch(batch *Batch) error {