diff --git a/drift/lib/src/runtime/manager/manager.dart b/drift/lib/src/runtime/manager/manager.dart index 0c8b01b1..cf4aabc7 100644 --- a/drift/lib/src/runtime/manager/manager.dart +++ b/drift/lib/src/runtime/manager/manager.dart @@ -228,27 +228,32 @@ abstract class BaseTableManager< C extends ProcessedTableManager> { /// The state for this manager final TableManagerState state; - final C Function(TableManagerState) _getChildManager; + final C Function(TableManagerState, + BaseTableManager) getChildManager; /// Create a new [BaseTableManager] instance - const BaseTableManager(this.state, this._getChildManager); + const BaseTableManager(this.state, this.getChildManager); Future delete() => state.buildDeleteStatement().go(); C orderBy(ComposableOrdering Function(OS o) o) { final orderings = o(state.orderingComposer); - return _getChildManager(state.copyWith( - orderingBuilders: - orderings.orderingBuilders.union(state.orderingBuilders), - joinBuilders: state.joinBuilders.union(orderings.joinBuilders))); + return getChildManager( + state.copyWith( + orderingBuilders: + orderings.orderingBuilders.union(state.orderingBuilders), + joinBuilders: state.joinBuilders.union(orderings.joinBuilders)), + this); } C filter(ComposableFilter Function(FS f) f) { final filter = f(state.filteringComposer); - return _getChildManager(state.copyWith( - filter: state.filter == null - ? filter.expression - : filter.expression & state.filter!, - joinBuilders: state.joinBuilders.union(filter.joinBuilders))); + return getChildManager( + state.copyWith( + filter: state.filter == null + ? filter.expression + : filter.expression & state.filter!, + joinBuilders: state.joinBuilders.union(filter.joinBuilders)), + this); } } @@ -300,7 +305,7 @@ abstract class RootTableManager< : _createInsertable = createInsertable; C all() { - return _getChildManager(state); + return getChildManager(state, this); } Future create(Insertable Function(CI o) f, diff --git a/drift_dev/lib/src/writer/manager.dart b/drift_dev/lib/src/writer/manager.dart index 4a447124..5cfe6b87 100644 --- a/drift_dev/lib/src/writer/manager.dart +++ b/drift_dev/lib/src/writer/manager.dart @@ -304,7 +304,7 @@ class _TableNames { ..writeDriftRef("TableManagerState") ..write( """(db: db, table: table, filteringComposer:$filterComposer(db, table),orderingComposer:$orderingComposer(db, table)) - ,createInsertable: $createInsertableFunctionArgs$createInsertableFunctionBody);""") + ,(p0,p1) => $processedTableManager(p0,p1.getChildManager),createInsertable: $createInsertableFunctionArgs$createInsertableFunctionBody);""") ..writeln('}'); }