add Batch wrapper with BindStruct method
This commit is contained in:
committed by
Maciej Zimnoch
parent
fc92258512
commit
dec046bd85
49
batchx.go
Normal file
49
batchx.go
Normal file
@@ -0,0 +1,49 @@
|
||||
package gocqlx
|
||||
|
||||
import (
|
||||
"github.com/gocql/gocql"
|
||||
)
|
||||
|
||||
type Batch struct {
|
||||
*gocql.Batch
|
||||
}
|
||||
|
||||
// NewBatch creates a new batch operation using defaults defined in the cluster.
|
||||
func (s *Session) NewBatch(bt gocql.BatchType) *Batch {
|
||||
return &Batch{
|
||||
Batch: s.Session.NewBatch(bt),
|
||||
}
|
||||
}
|
||||
|
||||
// BindStruct binds query named parameters to values from arg using a mapper.
|
||||
// If value cannot be found an error is reported.
|
||||
func (b *Batch) BindStruct(qry *Queryx, arg interface{}) error {
|
||||
args, err := qry.bindStructArgs(arg, nil)
|
||||
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 {
|
||||
return s.Session.ExecuteBatch(batch.Batch)
|
||||
}
|
||||
|
||||
// ExecuteBatchCAS executes a batch operation and returns true if successful and
|
||||
// an iterator (to scan additional rows if more than one conditional statement)
|
||||
// was sent.
|
||||
// Further scans on the interator must also remember to include
|
||||
// the applied boolean as the first argument to *Iter.Scan
|
||||
func (s *Session) ExecuteBatchCAS(batch *Batch, dest ...interface{}) (applied bool, iter *gocql.Iter, err error) {
|
||||
return s.Session.ExecuteBatchCAS(batch.Batch, dest...)
|
||||
}
|
||||
|
||||
// MapExecuteBatchCAS executes a batch operation much like ExecuteBatchCAS,
|
||||
// however it accepts a map rather than a list of arguments for the initial
|
||||
// scan.
|
||||
func (s *Session) MapExecuteBatchCAS(batch *Batch, dest map[string]interface{}) (applied bool, iter *gocql.Iter, err error) {
|
||||
return s.Session.MapExecuteBatchCAS(batch.Batch, dest)
|
||||
}
|
||||
Reference in New Issue
Block a user