diff options
author | 2021-10-24 13:14:37 +0200 | |
---|---|---|
committer | 2021-10-24 13:14:37 +0200 | |
commit | 8b7c3507fe0c8f6e921ee2de2c170ef93eeb7275 (patch) | |
tree | e79e3f5a59fb8942de79955bd26bf665be0acce8 /vendor/github.com/uptrace/bun/model_table_struct.go | |
parent | docs typo fix (#290) (diff) | |
download | gotosocial-8b7c3507fe0c8f6e921ee2de2c170ef93eeb7275.tar.xz |
upstep bun to v1.0.14 (#291)
Diffstat (limited to 'vendor/github.com/uptrace/bun/model_table_struct.go')
-rw-r--r-- | vendor/github.com/uptrace/bun/model_table_struct.go | 63 |
1 files changed, 45 insertions, 18 deletions
diff --git a/vendor/github.com/uptrace/bun/model_table_struct.go b/vendor/github.com/uptrace/bun/model_table_struct.go index fba17f42a..fadc9284c 100644 --- a/vendor/github.com/uptrace/bun/model_table_struct.go +++ b/vendor/github.com/uptrace/bun/model_table_struct.go @@ -100,38 +100,65 @@ func (m *structTableModel) mountJoins() { } } -var _ schema.BeforeScanHook = (*structTableModel)(nil) +var _ schema.BeforeAppendModelHook = (*structTableModel)(nil) -func (m *structTableModel) BeforeScan(ctx context.Context) error { - if !m.table.HasBeforeScanHook() { +func (m *structTableModel) BeforeAppendModel(ctx context.Context, query Query) error { + if !m.table.HasBeforeAppendModelHook() || !m.strct.IsValid() { return nil } - return callBeforeScanHook(ctx, m.strct.Addr()) + return m.strct.Addr().Interface().(schema.BeforeAppendModelHook).BeforeAppendModel(ctx, query) } -var _ schema.AfterScanHook = (*structTableModel)(nil) +var _ schema.BeforeScanRowHook = (*structTableModel)(nil) -func (m *structTableModel) AfterScan(ctx context.Context) error { - if !m.table.HasAfterScanHook() || !m.structInited { +func (m *structTableModel) BeforeScanRow(ctx context.Context) error { + if m.table.HasBeforeScanRowHook() { + return m.strct.Addr().Interface().(schema.BeforeScanRowHook).BeforeScanRow(ctx) + } + if m.table.HasBeforeScanHook() { + return m.strct.Addr().Interface().(schema.BeforeScanHook).BeforeScan(ctx) + } + return nil +} + +var _ schema.AfterScanRowHook = (*structTableModel)(nil) + +func (m *structTableModel) AfterScanRow(ctx context.Context) error { + if !m.structInited { return nil } - var firstErr error + if m.table.HasAfterScanRowHook() { + firstErr := m.strct.Addr().Interface().(schema.AfterScanRowHook).AfterScanRow(ctx) + + for _, j := range m.joins { + switch j.Relation.Type { + case schema.HasOneRelation, schema.BelongsToRelation: + if err := j.JoinModel.AfterScanRow(ctx); err != nil && firstErr == nil { + firstErr = err + } + } + } - if err := callAfterScanHook(ctx, m.strct.Addr()); err != nil && firstErr == nil { - firstErr = err + return firstErr } - for _, j := range m.joins { - switch j.Relation.Type { - case schema.HasOneRelation, schema.BelongsToRelation: - if err := j.JoinModel.AfterScan(ctx); err != nil && firstErr == nil { - firstErr = err + if m.table.HasAfterScanHook() { + firstErr := m.strct.Addr().Interface().(schema.AfterScanHook).AfterScan(ctx) + + for _, j := range m.joins { + switch j.Relation.Type { + case schema.HasOneRelation, schema.BelongsToRelation: + if err := j.JoinModel.AfterScanRow(ctx); err != nil && firstErr == nil { + firstErr = err + } } } + + return firstErr } - return firstErr + return nil } func (m *structTableModel) getJoin(name string) *relationJoin { @@ -257,7 +284,7 @@ func (m *structTableModel) ScanRow(ctx context.Context, rows *sql.Rows) error { } func (m *structTableModel) scanRow(ctx context.Context, rows *sql.Rows, dest []interface{}) error { - if err := m.BeforeScan(ctx); err != nil { + if err := m.BeforeScanRow(ctx); err != nil { return err } @@ -266,7 +293,7 @@ func (m *structTableModel) scanRow(ctx context.Context, rows *sql.Rows, dest []i return err } - if err := m.AfterScan(ctx); err != nil { + if err := m.AfterScanRow(ctx); err != nil { return err } |