summaryrefslogtreecommitdiff
path: root/vendor/github.com
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com')
-rw-r--r--vendor/github.com/uptrace/bun/CHANGELOG.md18
-rw-r--r--vendor/github.com/uptrace/bun/Makefile3
-rw-r--r--vendor/github.com/uptrace/bun/README.md8
-rw-r--r--vendor/github.com/uptrace/bun/db.go18
-rw-r--r--vendor/github.com/uptrace/bun/hook.go22
-rw-r--r--vendor/github.com/uptrace/bun/join.go12
-rw-r--r--vendor/github.com/uptrace/bun/model.go30
-rw-r--r--vendor/github.com/uptrace/bun/model_map.go2
-rw-r--r--vendor/github.com/uptrace/bun/model_map_slice.go2
-rw-r--r--vendor/github.com/uptrace/bun/model_scan.go2
-rw-r--r--vendor/github.com/uptrace/bun/model_slice.go2
-rw-r--r--vendor/github.com/uptrace/bun/model_table_has_many.go6
-rw-r--r--vendor/github.com/uptrace/bun/model_table_m2m.go2
-rw-r--r--vendor/github.com/uptrace/bun/model_table_slice.go12
-rw-r--r--vendor/github.com/uptrace/bun/model_table_struct.go52
-rw-r--r--vendor/github.com/uptrace/bun/package.json2
-rw-r--r--vendor/github.com/uptrace/bun/query_base.go47
-rw-r--r--vendor/github.com/uptrace/bun/query_select.go16
-rw-r--r--vendor/github.com/uptrace/bun/query_table_create.go13
-rw-r--r--vendor/github.com/uptrace/bun/schema/sqlfmt.go5
-rw-r--r--vendor/github.com/uptrace/bun/version.go2
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 @@
[![Chat](https://discordapp.com/api/guilds/752070105847955518/widget.png)](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"
}