openreplay/ee/backend/pkg/db/clickhouse/bulk.go
2021-05-03 17:53:25 +02:00

45 lines
650 B
Go

package clickhouse
import (
"errors"
"database/sql"
)
type bulk struct {
db *sql.DB
query string
tx *sql.Tx
stmt *sql.Stmt
}
func newBulk(db *sql.DB, query string) *bulk {
return &bulk{
db: db,
query: query,
}
}
func (b *bulk) prepare() error {
var err error
b.tx, err = b.db.Begin()
if err != nil {
return err
}
b.stmt, err = b.tx.Prepare(b.query)
if err != nil {
return err
}
return nil
}
func (b *bulk) commit() error {
return b.tx.Commit()
}
func (b *bulk) exec(args ...interface{}) error {
if b.stmt == nil {
return errors.New("Bulk is not prepared.")
}
_, err := b.stmt.Exec(args...)
return err
}