diff options
Diffstat (limited to 'vendor/github.com')
21 files changed, 168 insertions, 108 deletions
diff --git a/vendor/github.com/uptrace/bun/CHANGELOG.md b/vendor/github.com/uptrace/bun/CHANGELOG.md index 5a8f19e20..a0221c225 100644 --- a/vendor/github.com/uptrace/bun/CHANGELOG.md +++ b/vendor/github.com/uptrace/bun/CHANGELOG.md @@ -1,3 +1,21 @@ +## [1.0.9](https://github.com/uptrace/bun/compare/v1.0.8...v1.0.9) (2021-09-27) + + +### Bug Fixes + +* change DBStats to use uint32 instead of uint64 to make it work on i386 ([caca2a7](https://github.com/uptrace/bun/commit/caca2a7130288dec49fa26b49c8550140ee52f4c)) + + +### Features + +* add IQuery and QueryEvent.IQuery ([b762942](https://github.com/uptrace/bun/commit/b762942fa3b1d8686d0a559f93f2a6847b83d9c1)) +* add QueryEvent.Model ([7688201](https://github.com/uptrace/bun/commit/7688201b485d14d3e393956f09a3200ea4d4e31d)) +* **bunotel:** add experimental bun.query.timing metric ([2cdb384](https://github.com/uptrace/bun/commit/2cdb384678631ccadac0fb75f524bd5e91e96ee2)) +* **pgdriver:** add Config.ConnParams to session config params ([408caf0](https://github.com/uptrace/bun/commit/408caf0bb579e23e26fc6149efd6851814c22517)) +* **pgdriver:** allow specifying timeout in DSN ([7dbc71b](https://github.com/uptrace/bun/commit/7dbc71b3494caddc2e97d113f00067071b9e19da)) + + + ## [1.0.8](https://github.com/uptrace/bun/compare/v1.0.7...v1.0.8) (2021-09-18) diff --git a/vendor/github.com/uptrace/bun/Makefile b/vendor/github.com/uptrace/bun/Makefile index e121c1d8e..90181e9de 100644 --- a/vendor/github.com/uptrace/bun/Makefile +++ b/vendor/github.com/uptrace/bun/Makefile @@ -10,10 +10,11 @@ test: done go_mod_tidy: + go get -u && go mod tidy set -e; for dir in $(ALL_GO_MOD_DIRS); do \ echo "go mod tidy in $${dir}"; \ (cd "$${dir}" && \ - go get -d ./... && \ + go get -u ./... && \ go mod tidy); \ done diff --git a/vendor/github.com/uptrace/bun/README.md b/vendor/github.com/uptrace/bun/README.md index 434cf6124..9a8ed46c2 100644 --- a/vendor/github.com/uptrace/bun/README.md +++ b/vendor/github.com/uptrace/bun/README.md @@ -12,7 +12,7 @@ [](https://discord.gg/rWtp5Aj) **Status**: API freeze (stable release). Note that all sub-packages (mainly extra/\* packages) are -not part of the API freeze and are developed independently. You can think of them as 3-rd party +not part of the API freeze and are developed independently. You can think of them as of 3rd party packages that share one repo with the core. Main features are: @@ -32,11 +32,15 @@ Resources: - To ask questions, join [Discord](https://discord.gg/rWtp5Aj) or use [Discussions](https://github.com/uptrace/bun/discussions). -- [Newsletter](https://blog.uptrace.dev/newsletter/) to get latest updates. +- [Newsletter](https://blog.uptrace.dev/pages/newsletter.html) to get latest updates. - [Examples](https://github.com/uptrace/bun/tree/master/example) - [Documentation](https://bun.uptrace.dev/) - [Reference](https://pkg.go.dev/github.com/uptrace/bun) - [Starter kit](https://github.com/go-bun/bun-starter-kit) + +Projects using Bun: + +- [gotosocial](https://github.com/superseriousbusiness/gotosocial) - Golang fediverse server. - [RealWorld app](https://github.com/go-bun/bun-realworld-app) <details> diff --git a/vendor/github.com/uptrace/bun/db.go b/vendor/github.com/uptrace/bun/db.go index 9c9c8f9ff..97c3f2dfa 100644 --- a/vendor/github.com/uptrace/bun/db.go +++ b/vendor/github.com/uptrace/bun/db.go @@ -203,7 +203,7 @@ func (db *DB) Exec(query string, args ...interface{}) (sql.Result, error) { func (db *DB) ExecContext( ctx context.Context, query string, args ...interface{}, ) (sql.Result, error) { - ctx, event := db.beforeQuery(ctx, nil, query, args) + ctx, event := db.beforeQuery(ctx, nil, query, args, nil) res, err := db.DB.ExecContext(ctx, db.format(query, args)) db.afterQuery(ctx, event, res, err) return res, err @@ -216,7 +216,7 @@ func (db *DB) Query(query string, args ...interface{}) (*sql.Rows, error) { func (db *DB) QueryContext( ctx context.Context, query string, args ...interface{}, ) (*sql.Rows, error) { - ctx, event := db.beforeQuery(ctx, nil, query, args) + ctx, event := db.beforeQuery(ctx, nil, query, args, nil) rows, err := db.DB.QueryContext(ctx, db.format(query, args)) db.afterQuery(ctx, event, nil, err) return rows, err @@ -227,7 +227,7 @@ func (db *DB) QueryRow(query string, args ...interface{}) *sql.Row { } func (db *DB) QueryRowContext(ctx context.Context, query string, args ...interface{}) *sql.Row { - ctx, event := db.beforeQuery(ctx, nil, query, args) + ctx, event := db.beforeQuery(ctx, nil, query, args, nil) row := db.DB.QueryRowContext(ctx, db.format(query, args)) db.afterQuery(ctx, event, nil, row.Err()) return row @@ -258,7 +258,7 @@ func (db *DB) Conn(ctx context.Context) (Conn, error) { func (c Conn) ExecContext( ctx context.Context, query string, args ...interface{}, ) (sql.Result, error) { - ctx, event := c.db.beforeQuery(ctx, nil, query, args) + ctx, event := c.db.beforeQuery(ctx, nil, query, args, nil) res, err := c.Conn.ExecContext(ctx, c.db.format(query, args)) c.db.afterQuery(ctx, event, res, err) return res, err @@ -267,14 +267,14 @@ func (c Conn) ExecContext( func (c Conn) QueryContext( ctx context.Context, query string, args ...interface{}, ) (*sql.Rows, error) { - ctx, event := c.db.beforeQuery(ctx, nil, query, args) + ctx, event := c.db.beforeQuery(ctx, nil, query, args, nil) rows, err := c.Conn.QueryContext(ctx, c.db.format(query, args)) c.db.afterQuery(ctx, event, nil, err) return rows, err } func (c Conn) QueryRowContext(ctx context.Context, query string, args ...interface{}) *sql.Row { - ctx, event := c.db.beforeQuery(ctx, nil, query, args) + ctx, event := c.db.beforeQuery(ctx, nil, query, args, nil) row := c.Conn.QueryRowContext(ctx, c.db.format(query, args)) c.db.afterQuery(ctx, event, nil, row.Err()) return row @@ -392,7 +392,7 @@ func (tx Tx) Exec(query string, args ...interface{}) (sql.Result, error) { func (tx Tx) ExecContext( ctx context.Context, query string, args ...interface{}, ) (sql.Result, error) { - ctx, event := tx.db.beforeQuery(ctx, nil, query, args) + ctx, event := tx.db.beforeQuery(ctx, nil, query, args, nil) res, err := tx.Tx.ExecContext(ctx, tx.db.format(query, args)) tx.db.afterQuery(ctx, event, res, err) return res, err @@ -405,7 +405,7 @@ func (tx Tx) Query(query string, args ...interface{}) (*sql.Rows, error) { func (tx Tx) QueryContext( ctx context.Context, query string, args ...interface{}, ) (*sql.Rows, error) { - ctx, event := tx.db.beforeQuery(ctx, nil, query, args) + ctx, event := tx.db.beforeQuery(ctx, nil, query, args, nil) rows, err := tx.Tx.QueryContext(ctx, tx.db.format(query, args)) tx.db.afterQuery(ctx, event, nil, err) return rows, err @@ -416,7 +416,7 @@ func (tx Tx) QueryRow(query string, args ...interface{}) *sql.Row { } func (tx Tx) QueryRowContext(ctx context.Context, query string, args ...interface{}) *sql.Row { - ctx, event := tx.db.beforeQuery(ctx, nil, query, args) + ctx, event := tx.db.beforeQuery(ctx, nil, query, args, nil) row := tx.Tx.QueryRowContext(ctx, tx.db.format(query, args)) tx.db.afterQuery(ctx, event, nil, row.Err()) return row diff --git a/vendor/github.com/uptrace/bun/hook.go b/vendor/github.com/uptrace/bun/hook.go index ea6fc330b..7b60d2a28 100644 --- a/vendor/github.com/uptrace/bun/hook.go +++ b/vendor/github.com/uptrace/bun/hook.go @@ -11,12 +11,21 @@ import ( "github.com/uptrace/bun/schema" ) +type IQuery interface { + schema.QueryAppender + Operation() string + GetModel() Model + GetTableName() string +} + type QueryEvent struct { DB *DB - QueryAppender schema.Query + QueryAppender schema.QueryAppender // Deprecated: use IQuery instead + IQuery IQuery Query string QueryArgs []interface{} + Model Model StartTime time.Time Result sql.Result @@ -26,8 +35,8 @@ type QueryEvent struct { } func (e *QueryEvent) Operation() string { - if e.QueryAppender != nil { - return e.QueryAppender.Operation() + if e.IQuery != nil { + return e.IQuery.Operation() } return queryOperation(e.Query) } @@ -49,9 +58,10 @@ type QueryHook interface { func (db *DB) beforeQuery( ctx context.Context, - queryApp schema.Query, + iquery IQuery, query string, queryArgs []interface{}, + model Model, ) (context.Context, *QueryEvent) { atomic.AddUint32(&db.stats.Queries, 1) @@ -62,7 +72,9 @@ func (db *DB) beforeQuery( event := &QueryEvent{ DB: db, - QueryAppender: queryApp, + Model: model, + QueryAppender: iquery, + IQuery: iquery, Query: query, QueryArgs: queryArgs, diff --git a/vendor/github.com/uptrace/bun/join.go b/vendor/github.com/uptrace/bun/join.go index 42bf800d6..7d5ce06fc 100644 --- a/vendor/github.com/uptrace/bun/join.go +++ b/vendor/github.com/uptrace/bun/join.go @@ -10,8 +10,8 @@ import ( type relationJoin struct { Parent *relationJoin - BaseModel tableModel - JoinModel tableModel + BaseModel TableModel + JoinModel TableModel Relation *schema.Relation apply func(*SelectQuery) *SelectQuery @@ -71,8 +71,8 @@ func (j *relationJoin) manyQuery(q *SelectQuery) *SelectQuery { where = appendChildValues( q.db.Formatter(), where, - j.JoinModel.Root(), - j.JoinModel.ParentIndex(), + j.JoinModel.rootValue(), + j.JoinModel.parentIndex(), j.Relation.BaseFields, ) where = append(where, ")"...) @@ -135,7 +135,7 @@ func (j *relationJoin) m2mQuery(q *SelectQuery) *SelectQuery { } q = q.Model(m2mModel) - index := j.JoinModel.ParentIndex() + index := j.JoinModel.parentIndex() baseTable := j.BaseModel.Table() //nolint @@ -154,7 +154,7 @@ func (j *relationJoin) m2mQuery(q *SelectQuery) *SelectQuery { join = append(join, col.SQLName...) } join = append(join, ") IN ("...) - join = appendChildValues(fmter, join, j.BaseModel.Root(), index, baseTable.PKs) + join = appendChildValues(fmter, join, j.BaseModel.rootValue(), index, baseTable.PKs) join = append(join, ")"...) q = q.Join(internal.String(join)) diff --git a/vendor/github.com/uptrace/bun/model.go b/vendor/github.com/uptrace/bun/model.go index d392608c4..71a3a1e60 100644 --- a/vendor/github.com/uptrace/bun/model.go +++ b/vendor/github.com/uptrace/bun/model.go @@ -24,12 +24,8 @@ type rowScanner interface { ScanRow(ctx context.Context, rows *sql.Rows) error } -type model interface { +type TableModel interface { Model -} - -type tableModel interface { - model schema.BeforeScanHook schema.AfterScanHook @@ -38,19 +34,19 @@ type tableModel interface { Table() *schema.Table Relation() *schema.Relation - Join(string) *relationJoin - GetJoin(string) *relationJoin - GetJoins() []relationJoin - AddJoin(relationJoin) *relationJoin + join(string) *relationJoin + getJoin(string) *relationJoin + getJoins() []relationJoin + addJoin(relationJoin) *relationJoin - Root() reflect.Value - ParentIndex() []int - Mount(reflect.Value) + rootValue() reflect.Value + parentIndex() []int + mount(reflect.Value) updateSoftDeleteField(time.Time) error } -func newModel(db *DB, dest []interface{}) (model, error) { +func newModel(db *DB, dest []interface{}) (Model, error) { if len(dest) == 1 { return _newModel(db, dest[0], true) } @@ -74,11 +70,11 @@ func newModel(db *DB, dest []interface{}) (model, error) { return newSliceModel(db, dest, values), nil } -func newSingleModel(db *DB, dest interface{}) (model, error) { +func newSingleModel(db *DB, dest interface{}) (Model, error) { return _newModel(db, dest, false) } -func _newModel(db *DB, dest interface{}, scan bool) (model, error) { +func _newModel(db *DB, dest interface{}, scan bool) (Model, error) { switch dest := dest.(type) { case nil: return nil, errNilModel @@ -150,7 +146,7 @@ func newTableModelIndex( root reflect.Value, index []int, rel *schema.Relation, -) (tableModel, error) { +) (TableModel, error) { typ := typeByIndex(table.Type, index) if typ.Kind() == reflect.Struct { @@ -195,7 +191,7 @@ func validMap(typ reflect.Type) error { //------------------------------------------------------------------------------ -func isSingleRowModel(m model) bool { +func isSingleRowModel(m Model) bool { switch m.(type) { case *mapModel, *structTableModel, diff --git a/vendor/github.com/uptrace/bun/model_map.go b/vendor/github.com/uptrace/bun/model_map.go index 81c1a4a3b..7262ddbc1 100644 --- a/vendor/github.com/uptrace/bun/model_map.go +++ b/vendor/github.com/uptrace/bun/model_map.go @@ -21,7 +21,7 @@ type mapModel struct { scanIndex int } -var _ model = (*mapModel)(nil) +var _ Model = (*mapModel)(nil) func newMapModel(db *DB, dest *map[string]interface{}) *mapModel { m := &mapModel{ diff --git a/vendor/github.com/uptrace/bun/model_map_slice.go b/vendor/github.com/uptrace/bun/model_map_slice.go index 5c6f48e44..1e578db50 100644 --- a/vendor/github.com/uptrace/bun/model_map_slice.go +++ b/vendor/github.com/uptrace/bun/model_map_slice.go @@ -17,7 +17,7 @@ type mapSliceModel struct { keys []string } -var _ model = (*mapSliceModel)(nil) +var _ Model = (*mapSliceModel)(nil) func newMapSliceModel(db *DB, dest *[]map[string]interface{}) *mapSliceModel { return &mapSliceModel{ diff --git a/vendor/github.com/uptrace/bun/model_scan.go b/vendor/github.com/uptrace/bun/model_scan.go index 6dd061fb2..2ac22fbb0 100644 --- a/vendor/github.com/uptrace/bun/model_scan.go +++ b/vendor/github.com/uptrace/bun/model_scan.go @@ -13,7 +13,7 @@ type scanModel struct { scanIndex int } -var _ model = (*scanModel)(nil) +var _ Model = (*scanModel)(nil) func newScanModel(db *DB, dest []interface{}) *scanModel { return &scanModel{ diff --git a/vendor/github.com/uptrace/bun/model_slice.go b/vendor/github.com/uptrace/bun/model_slice.go index afe804382..bc29db41f 100644 --- a/vendor/github.com/uptrace/bun/model_slice.go +++ b/vendor/github.com/uptrace/bun/model_slice.go @@ -21,7 +21,7 @@ type sliceModel struct { info []sliceInfo } -var _ model = (*sliceModel)(nil) +var _ Model = (*sliceModel)(nil) func newSliceModel(db *DB, dest []interface{}, values []reflect.Value) *sliceModel { return &sliceModel{ diff --git a/vendor/github.com/uptrace/bun/model_table_has_many.go b/vendor/github.com/uptrace/bun/model_table_has_many.go index 6b29fa5da..4db3ec121 100644 --- a/vendor/github.com/uptrace/bun/model_table_has_many.go +++ b/vendor/github.com/uptrace/bun/model_table_has_many.go @@ -19,7 +19,7 @@ type hasManyModel struct { structKey []interface{} } -var _ tableModel = (*hasManyModel)(nil) +var _ TableModel = (*hasManyModel)(nil) func newHasManyModel(j *relationJoin) *hasManyModel { baseTable := j.BaseModel.Table() @@ -129,11 +129,11 @@ func (m *hasManyModel) parkStruct() error { return nil } -func baseValues(model tableModel, fields []*schema.Field) map[internal.MapKey][]reflect.Value { +func baseValues(model TableModel, fields []*schema.Field) map[internal.MapKey][]reflect.Value { fieldIndex := model.Relation().Field.Index m := make(map[internal.MapKey][]reflect.Value) key := make([]interface{}, 0, len(fields)) - walk(model.Root(), model.ParentIndex(), func(v reflect.Value) { + walk(model.rootValue(), model.parentIndex(), func(v reflect.Value) { key = modelKey(key[:0], v, fields) mapKey := internal.NewMapKey(key) m[mapKey] = append(m[mapKey], v.FieldByIndex(fieldIndex)) diff --git a/vendor/github.com/uptrace/bun/model_table_m2m.go b/vendor/github.com/uptrace/bun/model_table_m2m.go index d82bc7b8a..88d8a1268 100644 --- a/vendor/github.com/uptrace/bun/model_table_m2m.go +++ b/vendor/github.com/uptrace/bun/model_table_m2m.go @@ -19,7 +19,7 @@ type m2mModel struct { structKey []interface{} } -var _ tableModel = (*m2mModel)(nil) +var _ TableModel = (*m2mModel)(nil) func newM2MModel(j *relationJoin) *m2mModel { baseTable := j.BaseModel.Table() diff --git a/vendor/github.com/uptrace/bun/model_table_slice.go b/vendor/github.com/uptrace/bun/model_table_slice.go index 2fccaa5e7..b312b663d 100644 --- a/vendor/github.com/uptrace/bun/model_table_slice.go +++ b/vendor/github.com/uptrace/bun/model_table_slice.go @@ -18,7 +18,7 @@ type sliceTableModel struct { nextElem func() reflect.Value } -var _ tableModel = (*sliceTableModel)(nil) +var _ TableModel = (*sliceTableModel)(nil) func newSliceTableModel( db *DB, dest interface{}, slice reflect.Value, elemType reflect.Type, @@ -46,19 +46,15 @@ func (m *sliceTableModel) init(sliceType reflect.Type) { } } -func (m *sliceTableModel) Join(name string) *relationJoin { - return m.join(m.slice, name) -} - -func (m *sliceTableModel) Bind(bind reflect.Value) { - m.slice = bind.Field(m.index[len(m.index)-1]) +func (m *sliceTableModel) join(name string) *relationJoin { + return m._join(m.slice, name) } func (m *sliceTableModel) SetCap(cap int) { if cap > 100 { cap = 100 } - if m.slice.Cap() < cap { + if m.slice.Cap() == 0 { m.slice.Set(reflect.MakeSlice(m.slice.Type(), 0, cap)) } } diff --git a/vendor/github.com/uptrace/bun/model_table_struct.go b/vendor/github.com/uptrace/bun/model_table_struct.go index 409d54326..fba17f42a 100644 --- a/vendor/github.com/uptrace/bun/model_table_struct.go +++ b/vendor/github.com/uptrace/bun/model_table_struct.go @@ -30,7 +30,7 @@ type structTableModel struct { scanIndex int } -var _ tableModel = (*structTableModel)(nil) +var _ TableModel = (*structTableModel)(nil) func newStructTableModel(db *DB, dest interface{}, table *schema.Table) *structTableModel { return &structTableModel{ @@ -62,23 +62,6 @@ func (m *structTableModel) Relation() *schema.Relation { return m.rel } -func (m *structTableModel) Root() reflect.Value { - return m.root -} - -func (m *structTableModel) Index() []int { - return m.index -} - -func (m *structTableModel) ParentIndex() []int { - return m.index[:len(m.index)-len(m.rel.Field.Index)] -} - -func (m *structTableModel) Mount(host reflect.Value) { - m.strct = host.FieldByIndex(m.rel.Field.Index) - m.structInited = false -} - func (m *structTableModel) initStruct() error { if m.structInited { return m.structInitErr @@ -112,7 +95,7 @@ func (m *structTableModel) mountJoins() { j := &m.joins[i] switch j.Relation.Type { case schema.HasOneRelation, schema.BelongsToRelation: - j.JoinModel.Mount(m.strct) + j.JoinModel.mount(m.strct) } } } @@ -151,7 +134,7 @@ func (m *structTableModel) AfterScan(ctx context.Context) error { return firstErr } -func (m *structTableModel) GetJoin(name string) *relationJoin { +func (m *structTableModel) getJoin(name string) *relationJoin { for i := range m.joins { j := &m.joins[i] if j.Relation.Field.Name == name || j.Relation.Field.GoName == name { @@ -161,20 +144,20 @@ func (m *structTableModel) GetJoin(name string) *relationJoin { return nil } -func (m *structTableModel) GetJoins() []relationJoin { +func (m *structTableModel) getJoins() []relationJoin { return m.joins } -func (m *structTableModel) AddJoin(j relationJoin) *relationJoin { +func (m *structTableModel) addJoin(j relationJoin) *relationJoin { m.joins = append(m.joins, j) return &m.joins[len(m.joins)-1] } -func (m *structTableModel) Join(name string) *relationJoin { - return m.join(m.strct, name) +func (m *structTableModel) join(name string) *relationJoin { + return m._join(m.strct, name) } -func (m *structTableModel) join(bind reflect.Value, name string) *relationJoin { +func (m *structTableModel) _join(bind reflect.Value, name string) *relationJoin { path := strings.Split(name, ".") index := make([]int, 0, len(path)) @@ -193,7 +176,7 @@ func (m *structTableModel) join(bind reflect.Value, name string) *relationJoin { currJoin.Relation = relation index = append(index, relation.Field.Index...) - if j := currJoin.JoinModel.GetJoin(name); j != nil { + if j := currJoin.JoinModel.getJoin(name); j != nil { currJoin.BaseModel = j.BaseModel currJoin.JoinModel = j.JoinModel @@ -208,13 +191,26 @@ func (m *structTableModel) join(bind reflect.Value, name string) *relationJoin { currJoin.BaseModel = currJoin.JoinModel currJoin.JoinModel = model - lastJoin = currJoin.BaseModel.AddJoin(currJoin) + lastJoin = currJoin.BaseModel.addJoin(currJoin) } } return lastJoin } +func (m *structTableModel) rootValue() reflect.Value { + return m.root +} + +func (m *structTableModel) parentIndex() []int { + return m.index[:len(m.index)-len(m.rel.Field.Index)] +} + +func (m *structTableModel) mount(host reflect.Value) { + m.strct = host.FieldByIndex(m.rel.Field.Index) + m.structInited = false +} + func (m *structTableModel) updateSoftDeleteField(tm time.Time) error { if !m.strct.IsValid() { return nil @@ -309,7 +305,7 @@ func (m *structTableModel) scanColumn(column string, src interface{}) (bool, err } if joinName, column := splitColumn(column); joinName != "" { - if join := m.GetJoin(joinName); join != nil { + if join := m.getJoin(joinName); join != nil { return true, join.JoinModel.ScanColumn(column, src) } diff --git a/vendor/github.com/uptrace/bun/package.json b/vendor/github.com/uptrace/bun/package.json index d9b4162e9..2dab4c4be 100644 --- a/vendor/github.com/uptrace/bun/package.json +++ b/vendor/github.com/uptrace/bun/package.json @@ -1,6 +1,6 @@ { "name": "bun", - "version": "1.0.8", + "version": "1.0.9", "main": "index.js", "repository": "git@github.com:uptrace/bun.git", "author": "Vladimir Mihailenco <vladimir.webdev@gmail.com>", diff --git a/vendor/github.com/uptrace/bun/query_base.go b/vendor/github.com/uptrace/bun/query_base.go index 4e1151dbe..60226890f 100644 --- a/vendor/github.com/uptrace/bun/query_base.go +++ b/vendor/github.com/uptrace/bun/query_base.go @@ -68,10 +68,10 @@ type baseQuery struct { db *DB conn IConn - model model + model Model err error - tableModel tableModel + tableModel TableModel table *schema.Table with []withQuery @@ -86,10 +86,39 @@ func (q *baseQuery) DB() *DB { return q.db } +type query interface { + GetModel() Model + GetTableName() string +} + +var _ query = (*baseQuery)(nil) + func (q *baseQuery) GetModel() Model { return q.model } +func (q *baseQuery) GetTableName() string { + if q.table != nil { + return q.table.Name + } + + for _, wq := range q.with { + if v, ok := wq.query.(query); ok { + if model := v.GetModel(); model != nil { + return v.GetTableName() + } + } + } + + if q.modelTable.Query != "" { + return q.modelTable.Query + } + if len(q.tables) > 0 { + return q.tables[0].Query + } + return "" +} + func (q *baseQuery) setConn(db IConn) { // Unwrap Bun wrappers to not call query hooks twice. switch db := db.(type) { @@ -113,7 +142,7 @@ func (q *baseQuery) setTableModel(modeli interface{}) { } q.model = model - if tm, ok := model.(tableModel); ok { + if tm, ok := model.(TableModel); ok { q.tableModel = tm q.table = tm.Table() } @@ -125,7 +154,7 @@ func (q *baseQuery) setErr(err error) { } } -func (q *baseQuery) getModel(dest []interface{}) (model, error) { +func (q *baseQuery) getModel(dest []interface{}) (Model, error) { if len(dest) == 0 { if q.model != nil { return q.model, nil @@ -427,12 +456,12 @@ func (q *baseQuery) _getFields(omitPK bool) ([]*schema.Field, error) { func (q *baseQuery) scan( ctx context.Context, - queryApp schema.Query, + iquery IQuery, query string, - model model, + model Model, hasDest bool, ) (sql.Result, error) { - ctx, event := q.db.beforeQuery(ctx, queryApp, query, nil) + ctx, event := q.db.beforeQuery(ctx, iquery, query, nil, q.model) rows, err := q.conn.QueryContext(ctx, query) if err != nil { @@ -459,10 +488,10 @@ func (q *baseQuery) scan( func (q *baseQuery) exec( ctx context.Context, - queryApp schema.Query, + iquery IQuery, query string, ) (sql.Result, error) { - ctx, event := q.db.beforeQuery(ctx, queryApp, query, nil) + ctx, event := q.db.beforeQuery(ctx, iquery, query, nil, q.model) res, err := q.conn.ExecContext(ctx, query) if err != nil { diff --git a/vendor/github.com/uptrace/bun/query_select.go b/vendor/github.com/uptrace/bun/query_select.go index 03f4bc04b..806755cc4 100644 --- a/vendor/github.com/uptrace/bun/query_select.go +++ b/vendor/github.com/uptrace/bun/query_select.go @@ -297,7 +297,7 @@ func (q *SelectQuery) Relation(name string, apply ...func(*SelectQuery) *SelectQ return q } - join := q.tableModel.Join(name) + join := q.tableModel.join(name) if join == nil { q.setErr(fmt.Errorf("%s does not have relation=%q", q.table, name)) return q @@ -314,7 +314,7 @@ func (q *SelectQuery) forEachHasOneJoin(fn func(*relationJoin) error) error { if q.tableModel == nil { return nil } - return q._forEachHasOneJoin(fn, q.tableModel.GetJoins()) + return q._forEachHasOneJoin(fn, q.tableModel.getJoins()) } func (q *SelectQuery) _forEachHasOneJoin(fn func(*relationJoin) error, joins []relationJoin) error { @@ -325,7 +325,7 @@ func (q *SelectQuery) _forEachHasOneJoin(fn func(*relationJoin) error, joins []r if err := fn(j); err != nil { return err } - if err := q._forEachHasOneJoin(fn, j.JoinModel.GetJoins()); err != nil { + if err := q._forEachHasOneJoin(fn, j.JoinModel.getJoins()); err != nil { return err } } @@ -341,7 +341,7 @@ func (q *SelectQuery) selectJoins(ctx context.Context, joins []relationJoin) err switch j.Relation.Type { case schema.HasOneRelation, schema.BelongsToRelation: - err = q.selectJoins(ctx, j.JoinModel.GetJoins()) + err = q.selectJoins(ctx, j.JoinModel.getJoins()) case schema.HasManyRelation: err = j.selectMany(ctx, q.db.NewSelect()) case schema.ManyToManyRelation: @@ -701,8 +701,8 @@ func (q *SelectQuery) Scan(ctx context.Context, dest ...interface{}) error { } if n, _ := res.RowsAffected(); n > 0 { - if tableModel, ok := model.(tableModel); ok { - if err := q.selectJoins(ctx, tableModel.GetJoins()); err != nil { + if tableModel, ok := model.(TableModel); ok { + if err := q.selectJoins(ctx, tableModel.getJoins()); err != nil { return err } } @@ -744,7 +744,7 @@ func (q *SelectQuery) Count(ctx context.Context) (int, error) { } query := internal.String(queryBytes) - ctx, event := q.db.beforeQuery(ctx, qq, query, nil) + ctx, event := q.db.beforeQuery(ctx, qq, query, nil, q.model) var num int err = q.conn.QueryRowContext(ctx, query).Scan(&num) @@ -803,7 +803,7 @@ func (q *SelectQuery) Exists(ctx context.Context) (bool, error) { } query := internal.String(queryBytes) - ctx, event := q.db.beforeQuery(ctx, qq, query, nil) + ctx, event := q.db.beforeQuery(ctx, qq, query, nil, q.model) var exists bool err = q.conn.QueryRowContext(ctx, query).Scan(&exists) diff --git a/vendor/github.com/uptrace/bun/query_table_create.go b/vendor/github.com/uptrace/bun/query_table_create.go index 08c68e054..78910d5eb 100644 --- a/vendor/github.com/uptrace/bun/query_table_create.go +++ b/vendor/github.com/uptrace/bun/query_table_create.go @@ -63,6 +63,11 @@ func (q *CreateTableQuery) ModelTableExpr(query string, args ...interface{}) *Cr return q } +func (q *CreateTableQuery) ColumnExpr(query string, args ...interface{}) *CreateTableQuery { + q.addColumn(schema.SafeQuery(query, args)) + return q +} + //------------------------------------------------------------------------------ func (q *CreateTableQuery) Temp() *CreateTableQuery { @@ -132,6 +137,14 @@ func (q *CreateTableQuery) AppendQuery(fmter schema.Formatter, b []byte) (_ []by } } + for _, col := range q.columns { + b = append(b, ", "...) + b, err = col.AppendQuery(fmter, b) + if err != nil { + return nil, err + } + } + b = q.appendPKConstraint(b, q.table.PKs) b = q.appendUniqueConstraints(fmter, b) b, err = q.appenFKConstraints(fmter, b) diff --git a/vendor/github.com/uptrace/bun/schema/sqlfmt.go b/vendor/github.com/uptrace/bun/schema/sqlfmt.go index ba64e07ed..bbdb0a01f 100644 --- a/vendor/github.com/uptrace/bun/schema/sqlfmt.go +++ b/vendor/github.com/uptrace/bun/schema/sqlfmt.go @@ -4,11 +4,6 @@ type QueryAppender interface { AppendQuery(fmter Formatter, b []byte) ([]byte, error) } -type Query interface { - QueryAppender - Operation() string -} - type ColumnsAppender interface { AppendColumns(fmter Formatter, b []byte) ([]byte, error) } diff --git a/vendor/github.com/uptrace/bun/version.go b/vendor/github.com/uptrace/bun/version.go index 3ce6d6692..9e4962e2c 100644 --- a/vendor/github.com/uptrace/bun/version.go +++ b/vendor/github.com/uptrace/bun/version.go @@ -2,5 +2,5 @@ package bun // Version is the current release version. func Version() string { - return "1.0.8" + return "1.0.9" } |