Compare commits

...

7 Commits

4 changed files with 36 additions and 272 deletions

1
go.mod
View File

@ -5,4 +5,5 @@ go 1.13
require (
git.bit5.ru/backend/mysql v1.0.0
github.com/stretchr/testify v1.8.1
go.opentelemetry.io/otel v1.11.1
)

11
go.sum
View File

@ -3,6 +3,13 @@ git.bit5.ru/backend/mysql v1.0.0/go.mod h1:iK3dzIpv9YAGN8Fy6zi1XGUX8R5nl9XQ9NJbw
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
github.com/go-logr/logr v1.2.3 h1:2DntVwHkVopvECVRSlL5PSo9eG+cAkDCuckLubN+rq0=
github.com/go-logr/logr v1.2.3/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38=
github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
@ -12,6 +19,10 @@ github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk=
github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
go.opentelemetry.io/otel v1.11.1 h1:4WLLAmcfkmDk2ukNXJyq3/kiz/3UzCaYq6PskJsaou4=
go.opentelemetry.io/otel v1.11.1/go.mod h1:1nNhXBbWSD0nsL38H6btgnFN2k4i0sNLHNNMZMSbUGE=
go.opentelemetry.io/otel/trace v1.11.1 h1:ofxdnzsNrGBYXbP7t7zpUK281+go5rF7dvdIZXF8gdQ=
go.opentelemetry.io/otel/trace v1.11.1/go.mod h1:f/Q9G7vzk5u91PhbmKbg1Qn0rzH1LJ4vbPHFGkTPtOk=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=

270
tags
View File

@ -1,270 +0,0 @@
!_TAG_FILE_FORMAT 2 /extended format; --format=1 will not append ;" to lines/
!_TAG_FILE_SORTED 1 /0=unsorted, 1=sorted, 2=foldcase/
!_TAG_OUTPUT_MODE u-ctags /u-ctags or e-ctags/
!_TAG_PROGRAM_AUTHOR Universal Ctags Team //
!_TAG_PROGRAM_NAME Universal Ctags /Derived from Exuberant Ctags/
!_TAG_PROGRAM_URL https://ctags.io/ /official site/
!_TAG_PROGRAM_VERSION 0.0.0 /7fcdea3/
Begin transaction.go /^func (sess *Session) Begin() (*Tx, error) {$/;" f
BenchmarkDeleteSql delete_test.go /^func BenchmarkDeleteSql(b *testing.B) {$/;" f
BenchmarkInsertRecordsSql insert_test.go /^func BenchmarkInsertRecordsSql(b *testing.B) {$/;" f
BenchmarkInsertValuesSql insert_test.go /^func BenchmarkInsertValuesSql(b *testing.B) {$/;" f
BenchmarkSelectBasicSql select_test.go /^func BenchmarkSelectBasicSql(b *testing.B) {$/;" f
BenchmarkSelectFullSql select_test.go /^func BenchmarkSelectFullSql(b *testing.B) {$/;" f
BenchmarkUpdateValueMapSql update_test.go /^func BenchmarkUpdateValueMapSql(b *testing.B) {$/;" f
BenchmarkUpdateValuesSql update_test.go /^func BenchmarkUpdateValuesSql(b *testing.B) {$/;" f
Cols insert.go /^ Cols []string$/;" m struct:InsertBuilder
Columns insert.go /^func (b *InsertBuilder) Columns(columns ...string) *InsertBuilder {$/;" f
Columns select.go /^ Columns []string$/;" m struct:SelectBuilder
Commit transaction.go /^func (tx *Tx) Commit() error {$/;" f
Condition where.go /^ Condition string$/;" m struct:whereFragment
Connection dbr.go /^type Connection struct {$/;" s
Db dbr.go /^ Db *sql.DB$/;" m struct:Connection
DeleteBuilder delete.go /^type DeleteBuilder struct {$/;" s
DeleteFrom delete.go /^func (sess *Session) DeleteFrom(from string) *DeleteBuilder {$/;" f
DeleteFrom delete.go /^func (tx *Tx) DeleteFrom(from string) *DeleteBuilder {$/;" f
Distinct select.go /^func (b *SelectBuilder) Distinct() *SelectBuilder {$/;" f
Email dbr_test.go /^ Email NullString$/;" m struct:dbrPerson
Eq where.go /^type Eq map[string]interface{}$/;" t
EqualityMap where.go /^ EqualityMap map[string]interface{}$/;" m struct:whereFragment
ErrArgumentMismatch errors.go /^ ErrArgumentMismatch = errors.New("mismatch between ? (placeholders) and arguments")$/;" v
ErrInvalidSliceLength errors.go /^ ErrInvalidSliceLength = errors.New("length of slice is 0. length must be >= 1")$/;" v
ErrInvalidSliceValue errors.go /^ ErrInvalidSliceValue = errors.New("trying to interpolate invalid slice value into query")$/;" v
ErrInvalidValue errors.go /^ ErrInvalidValue = errors.New("trying to interpolate invalid value into query")$/;" v
ErrNotFound errors.go /^ ErrNotFound = errors.New("not found")$/;" v
ErrNotUTF8 errors.go /^ ErrNotUTF8 = errors.New("invalid UTF-8")$/;" v
Event event.go /^func (n *NullEventReceiver) Event(eventName string) {$/;" f
EventErr event.go /^func (n *NullEventReceiver) EventErr(eventName string, err error) error {$/;" f
EventErrKv event.go /^func (n *NullEventReceiver) EventErrKv(eventName string, err error, kvs map[string]string) error/;" f
EventKv event.go /^func (n *NullEventReceiver) EventKv(eventName string, kvs map[string]string) {$/;" f
EventReceiver event.go /^type EventReceiver interface {$/;" i
Exec delete.go /^func (b *DeleteBuilder) Exec() (sql.Result, error) {$/;" f
Exec insert.go /^func (b *InsertBuilder) Exec() (sql.Result, error) {$/;" f
Exec update.go /^func (b *UpdateBuilder) Exec() (sql.Result, error) {$/;" f
Expr expr.go /^func Expr(sql string, values ...interface{}) *expr {$/;" f
From delete.go /^ From string$/;" m struct:DeleteBuilder
From select.go /^func (b *SelectBuilder) From(from string) *SelectBuilder {$/;" f
FromTable select.go /^ FromTable string$/;" m struct:SelectBuilder
GroupBy select.go /^func (b *SelectBuilder) GroupBy(group string) *SelectBuilder {$/;" f
GroupBys select.go /^ GroupBys []string$/;" m struct:SelectBuilder
Having select.go /^func (b *SelectBuilder) Having(whereSqlOrMap interface{}, args ...interface{}) *SelectBuilder {$/;" f
HavingFragments select.go /^ HavingFragments []*whereFragment$/;" m struct:SelectBuilder
Id dbr_test.go /^ Id int64$/;" m struct:dbrPerson
Idxs struct_mapping.go /^ Idxs []int$/;" m struct:fieldMapQueueElement
InsertBuilder insert.go /^type InsertBuilder struct {$/;" s
InsertInto insert.go /^func (sess *Session) InsertInto(into string) *InsertBuilder {$/;" f
InsertInto insert.go /^func (tx *Tx) InsertInto(into string) *InsertBuilder {$/;" f
Interpolate interpolate.go /^func Interpolate(sql string, vals []interface{}) (string, error) {$/;" f
Into insert.go /^ Into string$/;" m struct:InsertBuilder
IsDistinct select.go /^ IsDistinct bool$/;" m struct:SelectBuilder
Key dbr_test.go /^ Key NullString$/;" m struct:dbrPerson
Limit delete.go /^func (b *DeleteBuilder) Limit(limit uint64) *DeleteBuilder {$/;" f
Limit select.go /^func (b *SelectBuilder) Limit(limit uint64) *SelectBuilder {$/;" f
Limit update.go /^func (b *UpdateBuilder) Limit(limit uint64) *UpdateBuilder {$/;" f
LimitCount delete.go /^ LimitCount uint64$/;" m struct:DeleteBuilder
LimitCount select.go /^ LimitCount uint64$/;" m struct:SelectBuilder
LimitCount update.go /^ LimitCount uint64$/;" m struct:UpdateBuilder
LimitValid delete.go /^ LimitValid bool$/;" m struct:DeleteBuilder
LimitValid select.go /^ LimitValid bool$/;" m struct:SelectBuilder
LimitValid update.go /^ LimitValid bool$/;" m struct:UpdateBuilder
LoadStruct select_load.go /^func (b *SelectBuilder) LoadStruct(dest interface{}) error {$/;" f
LoadStructs select_load.go /^func (b *SelectBuilder) LoadStructs(dest interface{}) (int, error) {$/;" f
LoadValue select_load.go /^func (b *SelectBuilder) LoadValue(dest interface{}) error {$/;" f
LoadValues select_load.go /^func (b *SelectBuilder) LoadValues(dest interface{}) (int, error) {$/;" f
MarshalJSON types.go /^func (n *NullBool) MarshalJSON() ([]byte, error) {$/;" f
MarshalJSON types.go /^func (n *NullInt64) MarshalJSON() ([]byte, error) {$/;" f
MarshalJSON types.go /^func (n *NullString) MarshalJSON() ([]byte, error) {$/;" f
MarshalJSON types.go /^func (n *NullTime) MarshalJSON() ([]byte, error) {$/;" f
MysqlQuoter quote.go /^type MysqlQuoter struct{}$/;" s
Name dbr_test.go /^ Name string$/;" m struct:dbrPerson
NameMapping util.go /^var NameMapping = camelCaseToSnakeCase$/;" v
NewConnection dbr.go /^func NewConnection(db *sql.DB, log EventReceiver) *Connection {$/;" f
NewSession dbr.go /^func (cxn *Connection) NewSession(log EventReceiver) *Session {$/;" f
Now now.go /^var Now = nowSentinel{}$/;" v
NullBool types.go /^type NullBool struct {$/;" s
NullEventReceiver event.go /^type NullEventReceiver struct{}$/;" s
NullInt64 types.go /^type NullInt64 struct {$/;" s
NullString types.go /^type NullString struct {$/;" s
NullTime types.go /^type NullTime struct {$/;" s
Offset delete.go /^func (b *DeleteBuilder) Offset(offset uint64) *DeleteBuilder {$/;" f
Offset select.go /^func (b *SelectBuilder) Offset(offset uint64) *SelectBuilder {$/;" f
Offset update.go /^func (b *UpdateBuilder) Offset(offset uint64) *UpdateBuilder {$/;" f
OffsetCount delete.go /^ OffsetCount uint64$/;" m struct:DeleteBuilder
OffsetCount select.go /^ OffsetCount uint64$/;" m struct:SelectBuilder
OffsetCount update.go /^ OffsetCount uint64$/;" m struct:UpdateBuilder
OffsetValid delete.go /^ OffsetValid bool$/;" m struct:DeleteBuilder
OffsetValid select.go /^ OffsetValid bool$/;" m struct:SelectBuilder
OffsetValid update.go /^ OffsetValid bool$/;" m struct:UpdateBuilder
OrderBy delete.go /^func (b *DeleteBuilder) OrderBy(ord string) *DeleteBuilder {$/;" f
OrderBy select.go /^func (b *SelectBuilder) OrderBy(ord string) *SelectBuilder {$/;" f
OrderBy update.go /^func (b *UpdateBuilder) OrderBy(ord string) *UpdateBuilder {$/;" f
OrderBys delete.go /^ OrderBys []string$/;" m struct:DeleteBuilder
OrderBys select.go /^ OrderBys []string$/;" m struct:SelectBuilder
OrderBys update.go /^ OrderBys []string$/;" m struct:UpdateBuilder
OrderDir delete.go /^func (b *DeleteBuilder) OrderDir(ord string, isAsc bool) *DeleteBuilder {$/;" f
OrderDir select.go /^func (b *SelectBuilder) OrderDir(ord string, isAsc bool) *SelectBuilder {$/;" f
OrderDir update.go /^func (b *UpdateBuilder) OrderDir(ord string, isAsc bool) *UpdateBuilder {$/;" f
Other insert_test.go /^ Other bool$/;" m struct:someRecord
Paginate select.go /^func (b *SelectBuilder) Paginate(page, perPage uint64) *SelectBuilder {$/;" f
Pair insert.go /^func (b *InsertBuilder) Pair(column string, value interface{}) *InsertBuilder {$/;" f
Present interpolate_test.go /^ Present bool$/;" m struct:myString
Quoter quote.go /^var Quoter = MysqlQuoter{}$/;" v
RawArguments select.go /^ RawArguments []interface{}$/;" m struct:SelectBuilder
RawArguments update.go /^ RawArguments []interface{}$/;" m struct:UpdateBuilder
RawFullSql select.go /^ RawFullSql string$/;" m struct:SelectBuilder
RawFullSql update.go /^ RawFullSql string$/;" m struct:UpdateBuilder
Record insert.go /^func (b *InsertBuilder) Record(record interface{}) *InsertBuilder {$/;" f
Recs insert.go /^ Recs []interface{}$/;" m struct:InsertBuilder
ReturnInt64 select_return.go /^func (b *SelectBuilder) ReturnInt64() (int64, error) {$/;" f
ReturnInt64s select_return.go /^func (b *SelectBuilder) ReturnInt64s() ([]int64, error) {$/;" f
ReturnString select_return.go /^func (b *SelectBuilder) ReturnString() (string, error) {$/;" f
ReturnStrings select_return.go /^func (b *SelectBuilder) ReturnStrings() ([]string, error) {$/;" f
ReturnUint64 select_return.go /^func (b *SelectBuilder) ReturnUint64() (uint64, error) {$/;" f
ReturnUint64s select_return.go /^func (b *SelectBuilder) ReturnUint64s() ([]uint64, error) {$/;" f
Rollback transaction.go /^func (tx *Tx) Rollback() error {$/;" f
RollbackUnlessCommitted transaction.go /^func (tx *Tx) RollbackUnlessCommitted() {$/;" f
Runner dbr.go /^type Runner interface {$/;" i
Select select.go /^func (sess *Session) Select(cols ...string) *SelectBuilder {$/;" f
Select select.go /^func (tx *Tx) Select(cols ...string) *SelectBuilder {$/;" f
SelectBuilder select.go /^type SelectBuilder struct {$/;" s
SelectBySql select.go /^func (sess *Session) SelectBySql(sql string, args ...interface{}) *SelectBuilder {$/;" f
SelectBySql select.go /^func (tx *Tx) SelectBySql(sql string, args ...interface{}) *SelectBuilder {$/;" f
Session dbr.go /^type Session struct {$/;" s
SessionRunner dbr.go /^type SessionRunner interface {$/;" i
Set update.go /^func (b *UpdateBuilder) Set(column string, value interface{}) *UpdateBuilder {$/;" f
SetClauses update.go /^ SetClauses []*setClause$/;" m struct:UpdateBuilder
SetMap update.go /^func (b *UpdateBuilder) SetMap(clauses map[string]interface{}) *UpdateBuilder {$/;" f
SomethingId insert_test.go /^ SomethingId int$/;" m struct:someRecord
Sql expr.go /^ Sql string$/;" m struct:expr
Table update.go /^ Table string$/;" m struct:UpdateBuilder
TestDeleteAllToSql delete_test.go /^func TestDeleteAllToSql(t *testing.T) {$/;" f
TestDeleteReal delete_test.go /^func TestDeleteReal(t *testing.T) {$/;" f
TestDeleteSingleToSql delete_test.go /^func TestDeleteSingleToSql(t *testing.T) {$/;" f
TestDeleteTenStaringFromTwentyToSql delete_test.go /^func TestDeleteTenStaringFromTwentyToSql(t *testing.T) {$/;" f
TestInsertKeywordColumnName insert_test.go /^func TestInsertKeywordColumnName(t *testing.T) {$/;" f
TestInsertMultipleToSql insert_test.go /^func TestInsertMultipleToSql(t *testing.T) {$/;" f
TestInsertReal insert_test.go /^func TestInsertReal(t *testing.T) {$/;" f
TestInsertRecordsToSql insert_test.go /^func TestInsertRecordsToSql(t *testing.T) {$/;" f
TestInsertSingleToSql insert_test.go /^func TestInsertSingleToSql(t *testing.T) {$/;" f
TestIntepolatingValuers interpolate_test.go /^func TestIntepolatingValuers(t *testing.T) {$/;" f
TestInterpolateBools interpolate_test.go /^func TestInterpolateBools(t *testing.T) {$/;" f
TestInterpolateErrors interpolate_test.go /^func TestInterpolateErrors(t *testing.T) {$/;" f
TestInterpolateFloats interpolate_test.go /^func TestInterpolateFloats(t *testing.T) {$/;" f
TestInterpolateInts interpolate_test.go /^func TestInterpolateInts(t *testing.T) {$/;" f
TestInterpolateNil interpolate_test.go /^func TestInterpolateNil(t *testing.T) {$/;" f
TestInterpolateSlices interpolate_test.go /^func TestInterpolateSlices(t *testing.T) {$/;" f
TestInterpolateStrings interpolate_test.go /^func TestInterpolateStrings(t *testing.T) {$/;" f
TestSelectBasicToSql select_test.go /^func TestSelectBasicToSql(t *testing.T) {$/;" f
TestSelectBySql select_test.go /^func TestSelectBySql(t *testing.T) {$/;" f
TestSelectBySqlLoadStructs select_test.go /^func TestSelectBySqlLoadStructs(t *testing.T) {$/;" f
TestSelectFullToSql select_test.go /^func TestSelectFullToSql(t *testing.T) {$/;" f
TestSelectLoadStruct select_test.go /^func TestSelectLoadStruct(t *testing.T) {$/;" f
TestSelectLoadStructs select_test.go /^func TestSelectLoadStructs(t *testing.T) {$/;" f
TestSelectLoadValue select_test.go /^func TestSelectLoadValue(t *testing.T) {$/;" f
TestSelectLoadValues select_test.go /^func TestSelectLoadValues(t *testing.T) {$/;" f
TestSelectMultiHavingSql select_test.go /^func TestSelectMultiHavingSql(t *testing.T) {$/;" f
TestSelectMultiOrderSql select_test.go /^func TestSelectMultiOrderSql(t *testing.T) {$/;" f
TestSelectNoWhereSql select_test.go /^func TestSelectNoWhereSql(t *testing.T) {$/;" f
TestSelectPaginateOrderDirToSql select_test.go /^func TestSelectPaginateOrderDirToSql(t *testing.T) {$/;" f
TestSelectReturn select_test.go /^func TestSelectReturn(t *testing.T) {$/;" f
TestSelectVarieties select_test.go /^func TestSelectVarieties(t *testing.T) {$/;" f
TestSelectWhereEqSql select_test.go /^func TestSelectWhereEqSql(t *testing.T) {$/;" f
TestSelectWhereMapSql select_test.go /^func TestSelectWhereMapSql(t *testing.T) {$/;" f
TestTransactionReal transaction_test.go /^func TestTransactionReal(t *testing.T) {$/;" f
TestTransactionRollbackReal transaction_test.go /^func TestTransactionRollbackReal(t *testing.T) {$/;" f
TestUpdateAllToSql update_test.go /^func TestUpdateAllToSql(t *testing.T) {$/;" f
TestUpdateKeywordColumnName update_test.go /^func TestUpdateKeywordColumnName(t *testing.T) {$/;" f
TestUpdateReal update_test.go /^func TestUpdateReal(t *testing.T) {$/;" f
TestUpdateSetExprToSql update_test.go /^func TestUpdateSetExprToSql(t *testing.T) {$/;" f
TestUpdateSetMapToSql update_test.go /^func TestUpdateSetMapToSql(t *testing.T) {$/;" f
TestUpdateSingleToSql update_test.go /^func TestUpdateSingleToSql(t *testing.T) {$/;" f
TestUpdateTenStaringFromTwentyToSql update_test.go /^func TestUpdateTenStaringFromTwentyToSql(t *testing.T) {$/;" f
Timing event.go /^func (n *NullEventReceiver) Timing(eventName string, nanoseconds int64) {$/;" f
TimingKv event.go /^func (n *NullEventReceiver) TimingKv(eventName string, nanoseconds int64, kvs map[string]string)/;" f
ToSql delete.go /^func (b *DeleteBuilder) ToSql() (string, []interface{}) {$/;" f
ToSql insert.go /^func (b *InsertBuilder) ToSql() (string, []interface{}) {$/;" f
ToSql select.go /^func (b *SelectBuilder) ToSql() (string, []interface{}) {$/;" f
ToSql update.go /^func (b *UpdateBuilder) ToSql() (string, []interface{}) {$/;" f
Tx transaction.go /^type Tx struct {$/;" s
Type struct_mapping.go /^ Type reflect.Type$/;" m struct:fieldMapQueueElement
Update update.go /^func (sess *Session) Update(table string) *UpdateBuilder {$/;" f
Update update.go /^func (tx *Tx) Update(table string) *UpdateBuilder {$/;" f
UpdateBuilder update.go /^type UpdateBuilder struct {$/;" s
UpdateBySql update.go /^func (sess *Session) UpdateBySql(sql string, args ...interface{}) *UpdateBuilder {$/;" f
UpdateBySql update.go /^func (tx *Tx) UpdateBySql(sql string, args ...interface{}) *UpdateBuilder {$/;" f
UserId insert_test.go /^ UserId int64$/;" m struct:someRecord
Val interpolate_test.go /^ Val string$/;" m struct:myString
Vals insert.go /^ Vals [][]interface{}$/;" m struct:InsertBuilder
Value interpolate_test.go /^func (m myString) Value() (driver.Value, error) {$/;" f
Value now.go /^func (n nowSentinel) Value() (driver.Value, error) {$/;" f
Values expr.go /^ Values []interface{}$/;" m struct:expr
Values insert.go /^func (b *InsertBuilder) Values(vals ...interface{}) *InsertBuilder {$/;" f
Values where.go /^ Values []interface{}$/;" m struct:whereFragment
Where delete.go /^func (b *DeleteBuilder) Where(whereSqlOrMap interface{}, args ...interface{}) *DeleteBuilder {$/;" f
Where select.go /^func (b *SelectBuilder) Where(whereSqlOrMap interface{}, args ...interface{}) *SelectBuilder {$/;" f
Where update.go /^func (b *UpdateBuilder) Where(whereSqlOrMap interface{}, args ...interface{}) *UpdateBuilder {$/;" f
WhereFragments delete.go /^ WhereFragments []*whereFragment$/;" m struct:DeleteBuilder
WhereFragments select.go /^ WhereFragments []*whereFragment$/;" m struct:SelectBuilder
WhereFragments update.go /^ WhereFragments []*whereFragment$/;" m struct:UpdateBuilder
calculateFieldMap struct_mapping.go /^func (sess *Session) calculateFieldMap(recordType reflect.Type, columns []string, requireAllColu/;" f
camelCaseToSnakeCase util.go /^func camelCaseToSnakeCase(name string) string {$/;" f
column update.go /^ column string$/;" m struct:setClause
createFakeSession dbr_test.go /^func createFakeSession() *Session {$/;" f
createRealSession dbr_test.go /^func createRealSession() *Session {$/;" f
createRealSessionWithFixtures dbr_test.go /^func createRealSessionWithFixtures() *Session {$/;" f
cxn dbr.go /^ cxn *Connection$/;" m struct:Session
dbr dbr.go /^package dbr$/;" p
dbr dbr_test.go /^package dbr$/;" p
dbr delete.go /^package dbr$/;" p
dbr delete_test.go /^package dbr$/;" p
dbr errors.go /^package dbr$/;" p
dbr event.go /^package dbr$/;" p
dbr expr.go /^package dbr$/;" p
dbr insert.go /^package dbr$/;" p
dbr insert_test.go /^package dbr$/;" p
dbr interpolate.go /^package dbr$/;" p
dbr interpolate_test.go /^package dbr$/;" p
dbr now.go /^package dbr$/;" p
dbr quote.go /^package dbr$/;" p
dbr select.go /^package dbr$/;" p
dbr select_load.go /^package dbr$/;" p
dbr select_return.go /^package dbr$/;" p
dbr select_test.go /^package dbr$/;" p
dbr struct_mapping.go /^package dbr$/;" p
dbr transaction.go /^package dbr$/;" p
dbr transaction_test.go /^package dbr$/;" p
dbr types.go /^package dbr$/;" p
dbr update.go /^package dbr$/;" p
dbr update_test.go /^package dbr$/;" p
dbr util.go /^package dbr$/;" p
dbr where.go /^package dbr$/;" p
dbrPerson dbr_test.go /^type dbrPerson struct {$/;" s
destDummy struct_mapping.go /^var destDummy interface{}$/;" v
escapeAndQuoteString interpolate.go /^func escapeAndQuoteString(val string) string {$/;" f
expr expr.go /^type expr struct {$/;" s
fieldMapQueueElement struct_mapping.go /^type fieldMapQueueElement struct {$/;" s
installFixtures dbr_test.go /^func installFixtures(db *sql.DB) {$/;" f
isFloat interpolate.go /^func isFloat(k reflect.Kind) bool {$/;" f
isInt interpolate.go /^func isInt(k reflect.Kind) bool {$/;" f
isUint interpolate.go /^func isUint(k reflect.Kind) bool {$/;" f
kvs event.go /^type kvs map[string]string$/;" t
myString interpolate_test.go /^type myString struct {$/;" s
newWhereFragment where.go /^func newWhereFragment(whereSqlOrMap interface{}, args []interface{}) *whereFragment {$/;" f
nowSentinel now.go /^type nowSentinel struct{}$/;" s
nullReceiver event.go /^var nullReceiver = &NullEventReceiver{}$/;" v
nullString types.go /^var nullString = []byte("null")$/;" v
prepareHolderFor struct_mapping.go /^func (sess *Session) prepareHolderFor(record reflect.Value, fieldMap [][]int, holder []interface/;" f
quoter quote.go /^type quoter interface {$/;" i
realDb dbr_test.go /^func realDb() *sql.DB {$/;" f
setClause update.go /^type setClause struct {$/;" s
someRecord insert_test.go /^type someRecord struct {$/;" s
timeFormat now.go /^var timeFormat = "2006-01-02 15:04:05"$/;" v
typeOfTime interpolate.go /^var typeOfTime = reflect.TypeOf(time.Time{})$/;" v
validateInsertingBarack insert_test.go /^func validateInsertingBarack(t *testing.T, s *Session, res sql.Result, err error) {$/;" f
value update.go /^ value interface{}$/;" m struct:setClause
valuesFor struct_mapping.go /^func (sess *Session) valuesFor(recordType reflect.Type, record reflect.Value, columns []string) /;" f
whereFragment where.go /^type whereFragment struct {$/;" s
writeEqualityMapToSql where.go /^func writeEqualityMapToSql(eq map[string]interface{}, sql *bytes.Buffer, args *[]interface{}, an/;" f
writeQuotedColumn quote.go /^func (q MysqlQuoter) writeQuotedColumn(column string, sql *bytes.Buffer) {$/;" f
writeWhereCondition where.go /^func writeWhereCondition(sql *bytes.Buffer, k string, pred string, anyConditions bool) bool {$/;" f
writeWhereFragmentsToSql where.go /^func writeWhereFragmentsToSql(fragments []*whereFragment, sql *bytes.Buffer, args *[]interface{}/;" f

View File

@ -2,11 +2,19 @@ package dbr
import (
"bytes"
"context"
"database/sql"
"fmt"
"time"
"go.opentelemetry.io/otel"
"go.opentelemetry.io/otel/codes"
)
const tracerName = "git.bit5.ru/backend/dbr"
var tracer = otel.Tracer(tracerName)
// UpdateBuilder contains the clauses for an UPDATE statement
type UpdateBuilder struct {
*Session
@ -185,8 +193,6 @@ func (b *UpdateBuilder) ToSql() (string, []interface{}) {
return sql.String(), args
}
// Exec executes the statement represented by the UpdateBuilder
// It returns the raw database/sql Result and an error if there was one
func (b *UpdateBuilder) Exec() (sql.Result, error) {
sql, args := b.ToSql()
@ -206,3 +212,19 @@ func (b *UpdateBuilder) Exec() (sql.Result, error) {
return result, nil
}
// ExecContext executes the statement represented by the UpdateBuilder
// It returns the raw database/sql Result and an error if there was one
func (b *UpdateBuilder) ExecContext(ctx context.Context) (sql.Result, error) {
_, span := tracer.Start(ctx, "UpdateBuilder.ExecContext")
defer span.End()
res, err := b.Exec()
if err != nil {
span.RecordError(err)
span.SetStatus(codes.Error, err.Error())
return nil, err
}
return res, err
}