@@ -15,12 +15,22 @@ import 'package:sqlite_async/sqlite_async.dart';
1515class SqliteAsyncDriftConnection extends DatabaseConnection {
1616 late StreamSubscription _updateSubscription;
1717
18- SqliteAsyncDriftConnection (SqliteConnection db, {bool logStatements = false })
19- : super (SqliteAsyncQueryExecutor (db, logStatements: logStatements)) {
18+ SqliteAsyncDriftConnection (
19+ SqliteConnection db, {
20+ bool logStatements = false ,
21+ Set <TableUpdate > Function (UpdateNotification )? transformTableUpdate,
22+ }) : super (SqliteAsyncQueryExecutor (db, logStatements: logStatements)) {
2023 _updateSubscription = (db as SqliteQueries ).updates! .listen ((event) {
21- var setUpdates = < TableUpdate > {};
22- for (var tableName in event.tables) {
23- setUpdates.add (TableUpdate (tableName));
24+ final Set <TableUpdate > setUpdates;
25+ // This is useful to map local table names from PowerSync that are backed by a view name
26+ // which is the entity that the user interacts with.
27+ if (transformTableUpdate != null ) {
28+ setUpdates = transformTableUpdate (event);
29+ } else {
30+ setUpdates = < TableUpdate > {};
31+ for (var tableName in event.tables) {
32+ setUpdates.add (TableUpdate (tableName));
33+ }
2434 }
2535 super .streamQueries.handleTableUpdates (setUpdates);
2636 });
0 commit comments