upstep bun to v1.0.9 (#252)

This commit is contained in:
tobi 2021-09-29 15:09:45 +02:00 committed by GitHub
commit 9a53b1a8d1
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
53 changed files with 285 additions and 791 deletions

View file

@ -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)
}