diff --git a/docs/lib/snippets/drift_files/custom_queries.drift.dart b/docs/lib/snippets/drift_files/custom_queries.drift.dart index 6bcbe9e7..2bb8229a 100644 --- a/docs/lib/snippets/drift_files/custom_queries.drift.dart +++ b/docs/lib/snippets/drift_files/custom_queries.drift.dart @@ -1,9 +1,11 @@ // ignore_for_file: type=lint import 'package:drift/drift.dart' as i0; import 'package:drift_docs/snippets/_shared/todo_tables.drift.dart' as i1; +import 'package:drift/internal/modular.dart' as i2; abstract class $MyDatabase extends i0.GeneratedDatabase { $MyDatabase(i0.QueryExecutor e) : super(e); + $MyDatabaseManager get managers => $MyDatabaseManager(this); late final i1.$CategoriesTable categories = i1.$CategoriesTable(this); late final i1.$TodoItemsTable todoItems = i1.$TodoItemsTable(this); i0.Selectable categoriesWithCount() { @@ -28,6 +30,226 @@ abstract class $MyDatabase extends i0.GeneratedDatabase { [categories, todoItems]; } +class $$CategoriesTableFilterComposer + extends i0.FilterComposer { + $$CategoriesTableFilterComposer(super.db, super.table); + i0.ColumnFilters get id => i0.ColumnFilters($table.id); + i0.ColumnFilters get name => i0.ColumnFilters($table.name); + i0.ComposableFilter todoItemsRefs( + i0.ComposableFilter Function($$TodoItemsTableFilterComposer f) f) { + return $composeWithJoins( + $db: $db, + $table: $table, + referencedTable: i2.ReadDatabaseContainer($db) + .resultSet('todo_items'), + getCurrentColumn: (f) => f.id, + getReferencedColumn: (f) => f.category, + getReferencedComposer: (db, table) => + $$TodoItemsTableFilterComposer(db, table), + builder: f); + } +} + +class $$CategoriesTableOrderingComposer + extends i0.OrderingComposer { + $$CategoriesTableOrderingComposer(super.db, super.table); + i0.ColumnOrderings get id => i0.ColumnOrderings($table.id); + i0.ColumnOrderings get name => i0.ColumnOrderings($table.name); +} + +class $$CategoriesTableProcessedTableManager extends i0.ProcessedTableManager< + i0.GeneratedDatabase, + i1.$CategoriesTable, + i1.Category, + $$CategoriesTableFilterComposer, + $$CategoriesTableOrderingComposer, + $$CategoriesTableProcessedTableManager, + $$CategoriesTableInsertCompanionBuilder, + $$CategoriesTableUpdateCompanionBuilder> { + const $$CategoriesTableProcessedTableManager(super.$state); +} + +typedef $$CategoriesTableInsertCompanionBuilder = i1.CategoriesCompanion + Function({ + i0.Value id, + required String name, +}); +typedef $$CategoriesTableUpdateCompanionBuilder = i1.CategoriesCompanion + Function({ + i0.Value id, + i0.Value name, +}); + +class $$CategoriesTableTableManager extends i0.RootTableManager< + i0.GeneratedDatabase, + i1.$CategoriesTable, + i1.Category, + $$CategoriesTableFilterComposer, + $$CategoriesTableOrderingComposer, + $$CategoriesTableProcessedTableManager, + $$CategoriesTableInsertCompanionBuilder, + $$CategoriesTableUpdateCompanionBuilder> { + $$CategoriesTableTableManager( + i0.GeneratedDatabase db, i1.$CategoriesTable table) + : super(i0.TableManagerState( + db: db, + table: table, + filteringComposer: $$CategoriesTableFilterComposer(db, table), + orderingComposer: $$CategoriesTableOrderingComposer(db, table), + getChildManagerBuilder: (p0) => + $$CategoriesTableProcessedTableManager(p0), + getUpdateCompanionBuilder: ({ + i0.Value id = const i0.Value.absent(), + i0.Value name = const i0.Value.absent(), + }) => + i1.CategoriesCompanion( + id: id, + name: name, + ), + getInsertCompanionBuilder: ({ + i0.Value id = const i0.Value.absent(), + required String name, + }) => + i1.CategoriesCompanion.insert( + id: id, + name: name, + ))); +} + +class $$TodoItemsTableFilterComposer + extends i0.FilterComposer { + $$TodoItemsTableFilterComposer(super.db, super.table); + i0.ColumnFilters get id => i0.ColumnFilters($table.id); + i0.ColumnFilters get title => i0.ColumnFilters($table.title); + i0.ColumnFilters get content => i0.ColumnFilters($table.content); + i0.ColumnFilters get categoryId => i0.ColumnFilters($table.category); + i0.ComposableFilter category( + i0.ComposableFilter Function($$CategoriesTableFilterComposer f) f) { + return $composeWithJoins( + $db: $db, + $table: $table, + referencedTable: i2.ReadDatabaseContainer($db) + .resultSet('categories'), + getCurrentColumn: (f) => f.category, + getReferencedColumn: (f) => f.id, + getReferencedComposer: (db, table) => + $$CategoriesTableFilterComposer(db, table), + builder: f); + } + + i0.ColumnFilters get dueDate => i0.ColumnFilters($table.dueDate); +} + +class $$TodoItemsTableOrderingComposer + extends i0.OrderingComposer { + $$TodoItemsTableOrderingComposer(super.db, super.table); + i0.ColumnOrderings get id => i0.ColumnOrderings($table.id); + i0.ColumnOrderings get title => i0.ColumnOrderings($table.title); + i0.ColumnOrderings get content => i0.ColumnOrderings($table.content); + i0.ColumnOrderings get categoryId => i0.ColumnOrderings($table.category); + i0.ComposableOrdering category( + i0.ComposableOrdering Function($$CategoriesTableOrderingComposer o) o) { + return $composeWithJoins( + $db: $db, + $table: $table, + referencedTable: i2.ReadDatabaseContainer($db) + .resultSet('categories'), + getCurrentColumn: (f) => f.category, + getReferencedColumn: (f) => f.id, + getReferencedComposer: (db, table) => + $$CategoriesTableOrderingComposer(db, table), + builder: o); + } + + i0.ColumnOrderings get dueDate => i0.ColumnOrderings($table.dueDate); +} + +class $$TodoItemsTableProcessedTableManager extends i0.ProcessedTableManager< + i0.GeneratedDatabase, + i1.$TodoItemsTable, + i1.TodoItem, + $$TodoItemsTableFilterComposer, + $$TodoItemsTableOrderingComposer, + $$TodoItemsTableProcessedTableManager, + $$TodoItemsTableInsertCompanionBuilder, + $$TodoItemsTableUpdateCompanionBuilder> { + const $$TodoItemsTableProcessedTableManager(super.$state); +} + +typedef $$TodoItemsTableInsertCompanionBuilder = i1.TodoItemsCompanion + Function({ + i0.Value id, + required String title, + required String content, + i0.Value category, + i0.Value dueDate, +}); +typedef $$TodoItemsTableUpdateCompanionBuilder = i1.TodoItemsCompanion + Function({ + i0.Value id, + i0.Value title, + i0.Value content, + i0.Value category, + i0.Value dueDate, +}); + +class $$TodoItemsTableTableManager extends i0.RootTableManager< + i0.GeneratedDatabase, + i1.$TodoItemsTable, + i1.TodoItem, + $$TodoItemsTableFilterComposer, + $$TodoItemsTableOrderingComposer, + $$TodoItemsTableProcessedTableManager, + $$TodoItemsTableInsertCompanionBuilder, + $$TodoItemsTableUpdateCompanionBuilder> { + $$TodoItemsTableTableManager( + i0.GeneratedDatabase db, i1.$TodoItemsTable table) + : super(i0.TableManagerState( + db: db, + table: table, + filteringComposer: $$TodoItemsTableFilterComposer(db, table), + orderingComposer: $$TodoItemsTableOrderingComposer(db, table), + getChildManagerBuilder: (p0) => + $$TodoItemsTableProcessedTableManager(p0), + getUpdateCompanionBuilder: ({ + i0.Value id = const i0.Value.absent(), + i0.Value title = const i0.Value.absent(), + i0.Value content = const i0.Value.absent(), + i0.Value category = const i0.Value.absent(), + i0.Value dueDate = const i0.Value.absent(), + }) => + i1.TodoItemsCompanion( + id: id, + title: title, + content: content, + category: category, + dueDate: dueDate, + ), + getInsertCompanionBuilder: ({ + i0.Value id = const i0.Value.absent(), + required String title, + required String content, + i0.Value category = const i0.Value.absent(), + i0.Value dueDate = const i0.Value.absent(), + }) => + i1.TodoItemsCompanion.insert( + id: id, + title: title, + content: content, + category: category, + dueDate: dueDate, + ))); +} + +class $MyDatabaseManager { + final $MyDatabase _db; + $MyDatabaseManager(this._db); + $$CategoriesTableTableManager get categories => + $$CategoriesTableTableManager(_db, _db.categories); + $$TodoItemsTableTableManager get todoItems => + $$TodoItemsTableTableManager(_db, _db.todoItems); +} + class CategoriesWithCountResult { final int id; final String name; diff --git a/docs/lib/snippets/modular/many_to_many/json.drift.dart b/docs/lib/snippets/modular/many_to_many/json.drift.dart index a7bdd538..5ffc5cff 100644 --- a/docs/lib/snippets/modular/many_to_many/json.drift.dart +++ b/docs/lib/snippets/modular/many_to_many/json.drift.dart @@ -7,6 +7,7 @@ import 'package:drift_docs/snippets/modular/many_to_many/json.dart' as i3; abstract class $JsonBasedDatabase extends i0.GeneratedDatabase { $JsonBasedDatabase(i0.QueryExecutor e) : super(e); + $JsonBasedDatabaseManager get managers => $JsonBasedDatabaseManager(this); late final i1.$BuyableItemsTable buyableItems = i1.$BuyableItemsTable(this); late final i2.$ShoppingCartsTable shoppingCarts = i2.$ShoppingCartsTable(this); @@ -18,6 +19,174 @@ abstract class $JsonBasedDatabase extends i0.GeneratedDatabase { [buyableItems, shoppingCarts]; } +class $$BuyableItemsTableFilterComposer + extends i0.FilterComposer { + $$BuyableItemsTableFilterComposer(super.db, super.table); + i0.ColumnFilters get id => i0.ColumnFilters($table.id); + i0.ColumnFilters get description => + i0.ColumnFilters($table.description); + i0.ColumnFilters get price => i0.ColumnFilters($table.price); +} + +class $$BuyableItemsTableOrderingComposer + extends i0.OrderingComposer { + $$BuyableItemsTableOrderingComposer(super.db, super.table); + i0.ColumnOrderings get id => i0.ColumnOrderings($table.id); + i0.ColumnOrderings get description => i0.ColumnOrderings($table.description); + i0.ColumnOrderings get price => i0.ColumnOrderings($table.price); +} + +class $$BuyableItemsTableProcessedTableManager extends i0.ProcessedTableManager< + i0.GeneratedDatabase, + i1.$BuyableItemsTable, + i1.BuyableItem, + $$BuyableItemsTableFilterComposer, + $$BuyableItemsTableOrderingComposer, + $$BuyableItemsTableProcessedTableManager, + $$BuyableItemsTableInsertCompanionBuilder, + $$BuyableItemsTableUpdateCompanionBuilder> { + const $$BuyableItemsTableProcessedTableManager(super.$state); +} + +typedef $$BuyableItemsTableInsertCompanionBuilder = i1.BuyableItemsCompanion + Function({ + i0.Value id, + required String description, + required int price, +}); +typedef $$BuyableItemsTableUpdateCompanionBuilder = i1.BuyableItemsCompanion + Function({ + i0.Value id, + i0.Value description, + i0.Value price, +}); + +class $$BuyableItemsTableTableManager extends i0.RootTableManager< + i0.GeneratedDatabase, + i1.$BuyableItemsTable, + i1.BuyableItem, + $$BuyableItemsTableFilterComposer, + $$BuyableItemsTableOrderingComposer, + $$BuyableItemsTableProcessedTableManager, + $$BuyableItemsTableInsertCompanionBuilder, + $$BuyableItemsTableUpdateCompanionBuilder> { + $$BuyableItemsTableTableManager( + i0.GeneratedDatabase db, i1.$BuyableItemsTable table) + : super(i0.TableManagerState( + db: db, + table: table, + filteringComposer: $$BuyableItemsTableFilterComposer(db, table), + orderingComposer: $$BuyableItemsTableOrderingComposer(db, table), + getChildManagerBuilder: (p0) => + $$BuyableItemsTableProcessedTableManager(p0), + getUpdateCompanionBuilder: ({ + i0.Value id = const i0.Value.absent(), + i0.Value description = const i0.Value.absent(), + i0.Value price = const i0.Value.absent(), + }) => + i1.BuyableItemsCompanion( + id: id, + description: description, + price: price, + ), + getInsertCompanionBuilder: ({ + i0.Value id = const i0.Value.absent(), + required String description, + required int price, + }) => + i1.BuyableItemsCompanion.insert( + id: id, + description: description, + price: price, + ))); +} + +class $$ShoppingCartsTableFilterComposer + extends i0.FilterComposer { + $$ShoppingCartsTableFilterComposer(super.db, super.table); + i0.ColumnFilters get id => i0.ColumnFilters($table.id); + i0.ColumnFilters get entriesValue => i0.ColumnFilters($table.entries); + i0.ColumnWithTypeConverterFilters + get entries => i0.ColumnWithTypeConverterFilters($table.entries); +} + +class $$ShoppingCartsTableOrderingComposer + extends i0.OrderingComposer { + $$ShoppingCartsTableOrderingComposer(super.db, super.table); + i0.ColumnOrderings get id => i0.ColumnOrderings($table.id); + i0.ColumnOrderings get entries => i0.ColumnOrderings($table.entries); +} + +class $$ShoppingCartsTableProcessedTableManager + extends i0.ProcessedTableManager< + i0.GeneratedDatabase, + i2.$ShoppingCartsTable, + i2.ShoppingCart, + $$ShoppingCartsTableFilterComposer, + $$ShoppingCartsTableOrderingComposer, + $$ShoppingCartsTableProcessedTableManager, + $$ShoppingCartsTableInsertCompanionBuilder, + $$ShoppingCartsTableUpdateCompanionBuilder> { + const $$ShoppingCartsTableProcessedTableManager(super.$state); +} + +typedef $$ShoppingCartsTableInsertCompanionBuilder = i2.ShoppingCartsCompanion + Function({ + i0.Value id, + required i3.ShoppingCartEntries entries, +}); +typedef $$ShoppingCartsTableUpdateCompanionBuilder = i2.ShoppingCartsCompanion + Function({ + i0.Value id, + i0.Value entries, +}); + +class $$ShoppingCartsTableTableManager extends i0.RootTableManager< + i0.GeneratedDatabase, + i2.$ShoppingCartsTable, + i2.ShoppingCart, + $$ShoppingCartsTableFilterComposer, + $$ShoppingCartsTableOrderingComposer, + $$ShoppingCartsTableProcessedTableManager, + $$ShoppingCartsTableInsertCompanionBuilder, + $$ShoppingCartsTableUpdateCompanionBuilder> { + $$ShoppingCartsTableTableManager( + i0.GeneratedDatabase db, i2.$ShoppingCartsTable table) + : super(i0.TableManagerState( + db: db, + table: table, + filteringComposer: $$ShoppingCartsTableFilterComposer(db, table), + orderingComposer: $$ShoppingCartsTableOrderingComposer(db, table), + getChildManagerBuilder: (p0) => + $$ShoppingCartsTableProcessedTableManager(p0), + getUpdateCompanionBuilder: ({ + i0.Value id = const i0.Value.absent(), + i0.Value entries = + const i0.Value.absent(), + }) => + i2.ShoppingCartsCompanion( + id: id, + entries: entries, + ), + getInsertCompanionBuilder: ({ + i0.Value id = const i0.Value.absent(), + required i3.ShoppingCartEntries entries, + }) => + i2.ShoppingCartsCompanion.insert( + id: id, + entries: entries, + ))); +} + +class $JsonBasedDatabaseManager { + final $JsonBasedDatabase _db; + $JsonBasedDatabaseManager(this._db); + $$BuyableItemsTableTableManager get buyableItems => + $$BuyableItemsTableTableManager(_db, _db.buyableItems); + $$ShoppingCartsTableTableManager get shoppingCarts => + $$ShoppingCartsTableTableManager(_db, _db.shoppingCarts); +} + class $ShoppingCartsTable extends i3.ShoppingCarts with i0.TableInfo<$ShoppingCartsTable, i2.ShoppingCart> { @override diff --git a/docs/lib/snippets/modular/many_to_many/relational.drift.dart b/docs/lib/snippets/modular/many_to_many/relational.drift.dart index 1d1bab75..7be0062c 100644 --- a/docs/lib/snippets/modular/many_to_many/relational.drift.dart +++ b/docs/lib/snippets/modular/many_to_many/relational.drift.dart @@ -4,10 +4,12 @@ import 'package:drift_docs/snippets/modular/many_to_many/shared.drift.dart' as i1; import 'package:drift_docs/snippets/modular/many_to_many/relational.drift.dart' as i2; -import 'package:drift_docs/snippets/modular/many_to_many/relational.dart' as i3; +import 'package:drift/internal/modular.dart' as i3; +import 'package:drift_docs/snippets/modular/many_to_many/relational.dart' as i4; abstract class $RelationalDatabase extends i0.GeneratedDatabase { $RelationalDatabase(i0.QueryExecutor e) : super(e); + $RelationalDatabaseManager get managers => $RelationalDatabaseManager(this); late final i1.$BuyableItemsTable buyableItems = i1.$BuyableItemsTable(this); late final i2.$ShoppingCartsTable shoppingCarts = i2.$ShoppingCartsTable(this); @@ -21,7 +23,327 @@ abstract class $RelationalDatabase extends i0.GeneratedDatabase { [buyableItems, shoppingCarts, shoppingCartEntries]; } -class $ShoppingCartsTable extends i3.ShoppingCarts +class $$BuyableItemsTableFilterComposer + extends i0.FilterComposer { + $$BuyableItemsTableFilterComposer(super.db, super.table); + i0.ColumnFilters get id => i0.ColumnFilters($table.id); + i0.ColumnFilters get description => + i0.ColumnFilters($table.description); + i0.ColumnFilters get price => i0.ColumnFilters($table.price); + i0.ComposableFilter shoppingCartEntriesRefs( + i0.ComposableFilter Function($$ShoppingCartEntriesTableFilterComposer f) + f) { + return $composeWithJoins( + $db: $db, + $table: $table, + referencedTable: i3.ReadDatabaseContainer($db) + .resultSet('shopping_cart_entries'), + getCurrentColumn: (f) => f.id, + getReferencedColumn: (f) => f.item, + getReferencedComposer: (db, table) => + $$ShoppingCartEntriesTableFilterComposer(db, table), + builder: f); + } +} + +class $$BuyableItemsTableOrderingComposer + extends i0.OrderingComposer { + $$BuyableItemsTableOrderingComposer(super.db, super.table); + i0.ColumnOrderings get id => i0.ColumnOrderings($table.id); + i0.ColumnOrderings get description => i0.ColumnOrderings($table.description); + i0.ColumnOrderings get price => i0.ColumnOrderings($table.price); +} + +class $$BuyableItemsTableProcessedTableManager extends i0.ProcessedTableManager< + i0.GeneratedDatabase, + i1.$BuyableItemsTable, + i1.BuyableItem, + $$BuyableItemsTableFilterComposer, + $$BuyableItemsTableOrderingComposer, + $$BuyableItemsTableProcessedTableManager, + $$BuyableItemsTableInsertCompanionBuilder, + $$BuyableItemsTableUpdateCompanionBuilder> { + const $$BuyableItemsTableProcessedTableManager(super.$state); +} + +typedef $$BuyableItemsTableInsertCompanionBuilder = i1.BuyableItemsCompanion + Function({ + i0.Value id, + required String description, + required int price, +}); +typedef $$BuyableItemsTableUpdateCompanionBuilder = i1.BuyableItemsCompanion + Function({ + i0.Value id, + i0.Value description, + i0.Value price, +}); + +class $$BuyableItemsTableTableManager extends i0.RootTableManager< + i0.GeneratedDatabase, + i1.$BuyableItemsTable, + i1.BuyableItem, + $$BuyableItemsTableFilterComposer, + $$BuyableItemsTableOrderingComposer, + $$BuyableItemsTableProcessedTableManager, + $$BuyableItemsTableInsertCompanionBuilder, + $$BuyableItemsTableUpdateCompanionBuilder> { + $$BuyableItemsTableTableManager( + i0.GeneratedDatabase db, i1.$BuyableItemsTable table) + : super(i0.TableManagerState( + db: db, + table: table, + filteringComposer: $$BuyableItemsTableFilterComposer(db, table), + orderingComposer: $$BuyableItemsTableOrderingComposer(db, table), + getChildManagerBuilder: (p0) => + $$BuyableItemsTableProcessedTableManager(p0), + getUpdateCompanionBuilder: ({ + i0.Value id = const i0.Value.absent(), + i0.Value description = const i0.Value.absent(), + i0.Value price = const i0.Value.absent(), + }) => + i1.BuyableItemsCompanion( + id: id, + description: description, + price: price, + ), + getInsertCompanionBuilder: ({ + i0.Value id = const i0.Value.absent(), + required String description, + required int price, + }) => + i1.BuyableItemsCompanion.insert( + id: id, + description: description, + price: price, + ))); +} + +class $$ShoppingCartsTableFilterComposer + extends i0.FilterComposer { + $$ShoppingCartsTableFilterComposer(super.db, super.table); + i0.ColumnFilters get id => i0.ColumnFilters($table.id); + i0.ComposableFilter shoppingCartEntriesRefs( + i0.ComposableFilter Function($$ShoppingCartEntriesTableFilterComposer f) + f) { + return $composeWithJoins( + $db: $db, + $table: $table, + referencedTable: i3.ReadDatabaseContainer($db) + .resultSet('shopping_cart_entries'), + getCurrentColumn: (f) => f.id, + getReferencedColumn: (f) => f.shoppingCart, + getReferencedComposer: (db, table) => + $$ShoppingCartEntriesTableFilterComposer(db, table), + builder: f); + } +} + +class $$ShoppingCartsTableOrderingComposer + extends i0.OrderingComposer { + $$ShoppingCartsTableOrderingComposer(super.db, super.table); + i0.ColumnOrderings get id => i0.ColumnOrderings($table.id); +} + +class $$ShoppingCartsTableProcessedTableManager + extends i0.ProcessedTableManager< + i0.GeneratedDatabase, + i2.$ShoppingCartsTable, + i2.ShoppingCart, + $$ShoppingCartsTableFilterComposer, + $$ShoppingCartsTableOrderingComposer, + $$ShoppingCartsTableProcessedTableManager, + $$ShoppingCartsTableInsertCompanionBuilder, + $$ShoppingCartsTableUpdateCompanionBuilder> { + const $$ShoppingCartsTableProcessedTableManager(super.$state); +} + +typedef $$ShoppingCartsTableInsertCompanionBuilder = i2.ShoppingCartsCompanion + Function({ + i0.Value id, +}); +typedef $$ShoppingCartsTableUpdateCompanionBuilder = i2.ShoppingCartsCompanion + Function({ + i0.Value id, +}); + +class $$ShoppingCartsTableTableManager extends i0.RootTableManager< + i0.GeneratedDatabase, + i2.$ShoppingCartsTable, + i2.ShoppingCart, + $$ShoppingCartsTableFilterComposer, + $$ShoppingCartsTableOrderingComposer, + $$ShoppingCartsTableProcessedTableManager, + $$ShoppingCartsTableInsertCompanionBuilder, + $$ShoppingCartsTableUpdateCompanionBuilder> { + $$ShoppingCartsTableTableManager( + i0.GeneratedDatabase db, i2.$ShoppingCartsTable table) + : super(i0.TableManagerState( + db: db, + table: table, + filteringComposer: $$ShoppingCartsTableFilterComposer(db, table), + orderingComposer: $$ShoppingCartsTableOrderingComposer(db, table), + getChildManagerBuilder: (p0) => + $$ShoppingCartsTableProcessedTableManager(p0), + getUpdateCompanionBuilder: ({ + i0.Value id = const i0.Value.absent(), + }) => + i2.ShoppingCartsCompanion( + id: id, + ), + getInsertCompanionBuilder: ({ + i0.Value id = const i0.Value.absent(), + }) => + i2.ShoppingCartsCompanion.insert( + id: id, + ))); +} + +class $$ShoppingCartEntriesTableFilterComposer extends i0 + .FilterComposer { + $$ShoppingCartEntriesTableFilterComposer(super.db, super.table); + i0.ColumnFilters get shoppingCartId => + i0.ColumnFilters($table.shoppingCart); + i0.ComposableFilter shoppingCart( + i0.ComposableFilter Function($$ShoppingCartsTableFilterComposer f) f) { + return $composeWithJoins( + $db: $db, + $table: $table, + referencedTable: i3.ReadDatabaseContainer($db) + .resultSet('shopping_carts'), + getCurrentColumn: (f) => f.shoppingCart, + getReferencedColumn: (f) => f.id, + getReferencedComposer: (db, table) => + $$ShoppingCartsTableFilterComposer(db, table), + builder: f); + } + + i0.ColumnFilters get itemId => i0.ColumnFilters($table.item); + i0.ComposableFilter item( + i0.ComposableFilter Function($$BuyableItemsTableFilterComposer f) f) { + return $composeWithJoins( + $db: $db, + $table: $table, + referencedTable: i3.ReadDatabaseContainer($db) + .resultSet('buyable_items'), + getCurrentColumn: (f) => f.item, + getReferencedColumn: (f) => f.id, + getReferencedComposer: (db, table) => + $$BuyableItemsTableFilterComposer(db, table), + builder: f); + } +} + +class $$ShoppingCartEntriesTableOrderingComposer extends i0 + .OrderingComposer { + $$ShoppingCartEntriesTableOrderingComposer(super.db, super.table); + i0.ColumnOrderings get shoppingCartId => + i0.ColumnOrderings($table.shoppingCart); + i0.ComposableOrdering shoppingCart( + i0.ComposableOrdering Function($$ShoppingCartsTableOrderingComposer o) + o) { + return $composeWithJoins( + $db: $db, + $table: $table, + referencedTable: i3.ReadDatabaseContainer($db) + .resultSet('shopping_carts'), + getCurrentColumn: (f) => f.shoppingCart, + getReferencedColumn: (f) => f.id, + getReferencedComposer: (db, table) => + $$ShoppingCartsTableOrderingComposer(db, table), + builder: o); + } + + i0.ColumnOrderings get itemId => i0.ColumnOrderings($table.item); + i0.ComposableOrdering item( + i0.ComposableOrdering Function($$BuyableItemsTableOrderingComposer o) o) { + return $composeWithJoins( + $db: $db, + $table: $table, + referencedTable: i3.ReadDatabaseContainer($db) + .resultSet('buyable_items'), + getCurrentColumn: (f) => f.item, + getReferencedColumn: (f) => f.id, + getReferencedComposer: (db, table) => + $$BuyableItemsTableOrderingComposer(db, table), + builder: o); + } +} + +class $$ShoppingCartEntriesTableProcessedTableManager + extends i0.ProcessedTableManager< + i0.GeneratedDatabase, + i2.$ShoppingCartEntriesTable, + i2.ShoppingCartEntry, + $$ShoppingCartEntriesTableFilterComposer, + $$ShoppingCartEntriesTableOrderingComposer, + $$ShoppingCartEntriesTableProcessedTableManager, + $$ShoppingCartEntriesTableInsertCompanionBuilder, + $$ShoppingCartEntriesTableUpdateCompanionBuilder> { + const $$ShoppingCartEntriesTableProcessedTableManager(super.$state); +} + +typedef $$ShoppingCartEntriesTableInsertCompanionBuilder + = i2.ShoppingCartEntriesCompanion Function({ + required int shoppingCart, + required int item, +}); +typedef $$ShoppingCartEntriesTableUpdateCompanionBuilder + = i2.ShoppingCartEntriesCompanion Function({ + i0.Value shoppingCart, + i0.Value item, +}); + +class $$ShoppingCartEntriesTableTableManager extends i0.RootTableManager< + i0.GeneratedDatabase, + i2.$ShoppingCartEntriesTable, + i2.ShoppingCartEntry, + $$ShoppingCartEntriesTableFilterComposer, + $$ShoppingCartEntriesTableOrderingComposer, + $$ShoppingCartEntriesTableProcessedTableManager, + $$ShoppingCartEntriesTableInsertCompanionBuilder, + $$ShoppingCartEntriesTableUpdateCompanionBuilder> { + $$ShoppingCartEntriesTableTableManager( + i0.GeneratedDatabase db, i2.$ShoppingCartEntriesTable table) + : super(i0.TableManagerState( + db: db, + table: table, + filteringComposer: + $$ShoppingCartEntriesTableFilterComposer(db, table), + orderingComposer: + $$ShoppingCartEntriesTableOrderingComposer(db, table), + getChildManagerBuilder: (p0) => + $$ShoppingCartEntriesTableProcessedTableManager(p0), + getUpdateCompanionBuilder: ({ + i0.Value shoppingCart = const i0.Value.absent(), + i0.Value item = const i0.Value.absent(), + }) => + i2.ShoppingCartEntriesCompanion( + shoppingCart: shoppingCart, + item: item, + ), + getInsertCompanionBuilder: ({ + required int shoppingCart, + required int item, + }) => + i2.ShoppingCartEntriesCompanion.insert( + shoppingCart: shoppingCart, + item: item, + ))); +} + +class $RelationalDatabaseManager { + final $RelationalDatabase _db; + $RelationalDatabaseManager(this._db); + $$BuyableItemsTableTableManager get buyableItems => + $$BuyableItemsTableTableManager(_db, _db.buyableItems); + $$ShoppingCartsTableTableManager get shoppingCarts => + $$ShoppingCartsTableTableManager(_db, _db.shoppingCarts); + $$ShoppingCartEntriesTableTableManager get shoppingCartEntries => + $$ShoppingCartEntriesTableTableManager(_db, _db.shoppingCartEntries); +} + +class $ShoppingCartsTable extends i4.ShoppingCarts with i0.TableInfo<$ShoppingCartsTable, i2.ShoppingCart> { @override final i0.GeneratedDatabase attachedDatabase; @@ -163,7 +485,7 @@ class ShoppingCartsCompanion extends i0.UpdateCompanion { } } -class $ShoppingCartEntriesTable extends i3.ShoppingCartEntries +class $ShoppingCartEntriesTable extends i4.ShoppingCartEntries with i0.TableInfo<$ShoppingCartEntriesTable, i2.ShoppingCartEntry> { @override final i0.GeneratedDatabase attachedDatabase; diff --git a/drift_dev/lib/src/writer/manager_writer.dart b/drift_dev/lib/src/writer/manager_writer.dart index 32c83f0a..fb689fb4 100644 --- a/drift_dev/lib/src/writer/manager_writer.dart +++ b/drift_dev/lib/src/writer/manager_writer.dart @@ -411,6 +411,17 @@ class _TableWriter { _writeRootTable(leaf); } + String _referenceTable(DriftTable table) { + if (scope.generationOptions.isModular) { + final extension = scope.refUri( + ModularAccessorWriter.modularSupport, 'ReadDatabaseContainer'); + final type = scope.dartCode(scope.entityInfoType(table)); + return "$extension(\$db).resultSet<$type>('${table.schemaName}')"; + } else { + return '\$db.${table.dbGetterName}'; + } + } + /// Add filters and orderings for the columns of this table void addFiltersAndOrderings(List tables) { // Utility function to get the referenced table and column @@ -482,9 +493,7 @@ class _TableWriter { final referencedTableNames = _TableWriter(referencedTable, scope, dbScope, databaseGenericName); final referencedColumnNames = _ColumnWriter(referencedCol.nameInDart); - final String referencedTableField = scope.generationOptions.isModular - ? "\$db.resultSet<${referencedTableNames.tableClassName}>('${referencedTable.schemaName}')" - : "\$db.${referencedTable.dbGetterName}"; + final referencedTableField = _referenceTable(referencedTable); c.filters.add(_ReferencedFilterWriter(c.fieldGetter, fieldGetter: c.fieldGetter, @@ -510,9 +519,7 @@ class _TableWriter { final referencedTableNames = _TableWriter(ot, scope, dbScope, databaseGenericName); final referencedColumnNames = _ColumnWriter(oc.nameInDart); - final String referencedTableField = scope.generationOptions.isModular - ? "\$db.resultSet<${referencedTableNames.tableClassName}>('${ot.schemaName}')" - : "\$db.${ot.dbGetterName}"; + final referencedTableField = _referenceTable(ot); final filterName = oc.referenceName ?? "${referencedTableNames.table.dbGetterName}Refs"; @@ -588,12 +595,6 @@ class ManagerWriter { void write() { final leaf = _scope.leaf(); - // When generating with modular generation, we need to add the imports - // for the internal `resultSet` helper - if (_scope.generationOptions.isModular) { - leaf.refUri(ModularAccessorWriter.modularSupport, ''); - } - // Write the manager class for each table final tableWriters = <_TableWriter>[]; for (var table in _addedTables) { diff --git a/drift_dev/test/writer/data_class_writer_test.dart b/drift_dev/test/writer/data_class_writer_test.dart index 25ad6e82..93f71703 100644 --- a/drift_dev/test/writer/data_class_writer_test.dart +++ b/drift_dev/test/writer/data_class_writer_test.dart @@ -5,7 +5,6 @@ import 'package:analyzer/file_system/memory_file_system.dart'; import 'package:build/build.dart'; import 'package:build_test/build_test.dart'; import 'package:collection/collection.dart'; -import 'package:pub_semver/pub_semver.dart'; import 'package:test/test.dart'; import '../utils.dart'; diff --git a/examples/manager/lib/database.dart b/examples/manager/lib/database.dart index a5033912..7ad1aabb 100644 --- a/examples/manager/lib/database.dart +++ b/examples/manager/lib/database.dart @@ -1,7 +1,6 @@ import 'dart:io'; import 'package:drift/drift.dart'; -import 'package:drift/internal/manager.dart'; import 'package:drift/native.dart'; import 'package:flutter/material.dart' show Color; import 'package:manager/tables.dart'; diff --git a/examples/manager/lib/database.g.dart b/examples/manager/lib/database.g.dart index 0a6e545a..40b0c010 100644 --- a/examples/manager/lib/database.g.dart +++ b/examples/manager/lib/database.g.dart @@ -960,7 +960,7 @@ class $$ProductsTableFilterComposer ColumnWithTypeConverterFilters($table.color); ComposableFilter listings( ComposableFilter Function($$ListingsTableFilterComposer f) f) { - return composeWithJoins( + return $composeWithJoins( $db: $db, $table: $table, referencedTable: $db.listings, @@ -1063,7 +1063,7 @@ class $$OwnerTableFilterComposer ColumnFilters get name => ColumnFilters($table.name); ComposableFilter stores( ComposableFilter Function($$StoreTableFilterComposer f) f) { - return composeWithJoins( + return $composeWithJoins( $db: $db, $table: $table, referencedTable: $db.store, @@ -1146,7 +1146,7 @@ class $$StoreTableFilterComposer ColumnFilters get ownerId => ColumnFilters($table.owner); ComposableFilter owner( ComposableFilter Function($$OwnerTableFilterComposer f) f) { - return composeWithJoins( + return $composeWithJoins( $db: $db, $table: $table, referencedTable: $db.owner, @@ -1159,7 +1159,7 @@ class $$StoreTableFilterComposer ComposableFilter listings( ComposableFilter Function($$ListingsTableFilterComposer f) f) { - return composeWithJoins( + return $composeWithJoins( $db: $db, $table: $table, referencedTable: $db.listings, @@ -1179,7 +1179,7 @@ class $$StoreTableOrderingComposer ColumnOrderings get ownerId => ColumnOrderings($table.owner); ComposableOrdering owner( ComposableOrdering Function($$OwnerTableOrderingComposer o) o) { - return composeWithJoins( + return $composeWithJoins( $db: $db, $table: $table, referencedTable: $db.owner, @@ -1260,7 +1260,7 @@ class $$ListingsTableFilterComposer ColumnFilters get productId => ColumnFilters($table.product); ComposableFilter product( ComposableFilter Function($$ProductsTableFilterComposer f) f) { - return composeWithJoins( + return $composeWithJoins( $db: $db, $table: $table, referencedTable: $db.products, @@ -1274,7 +1274,7 @@ class $$ListingsTableFilterComposer ColumnFilters get storeId => ColumnFilters($table.store); ComposableFilter store( ComposableFilter Function($$StoreTableFilterComposer f) f) { - return composeWithJoins( + return $composeWithJoins( $db: $db, $table: $table, referencedTable: $db.store, @@ -1295,7 +1295,7 @@ class $$ListingsTableOrderingComposer ColumnOrderings get productId => ColumnOrderings($table.product); ComposableOrdering product( ComposableOrdering Function($$ProductsTableOrderingComposer o) o) { - return composeWithJoins( + return $composeWithJoins( $db: $db, $table: $table, referencedTable: $db.products, @@ -1309,7 +1309,7 @@ class $$ListingsTableOrderingComposer ColumnOrderings get storeId => ColumnOrderings($table.store); ComposableOrdering store( ComposableOrdering Function($$StoreTableOrderingComposer o) o) { - return composeWithJoins( + return $composeWithJoins( $db: $db, $table: $table, referencedTable: $db.store, diff --git a/examples/manager/lib/main.dart b/examples/manager/lib/main.dart index 1a93b016..45cf5402 100644 --- a/examples/manager/lib/main.dart +++ b/examples/manager/lib/main.dart @@ -1,4 +1,3 @@ -import 'package:flex_color_picker/flex_color_picker.dart'; import 'package:flutter/material.dart'; import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; @@ -11,7 +10,7 @@ import 'package:manager/pages/store.dart'; late final AppDatabase db; void main() { db = AppDatabase(); - runApp(ProviderScope(child: const MyApp())); + runApp(const ProviderScope(child: MyApp())); } class MyApp extends StatelessWidget { diff --git a/examples/manager/lib/pages/listings.dart b/examples/manager/lib/pages/listings.dart index 93e41ef7..9a7c4b78 100644 --- a/examples/manager/lib/pages/listings.dart +++ b/examples/manager/lib/pages/listings.dart @@ -1,4 +1,3 @@ -import 'package:flex_color_picker/flex_color_picker.dart'; import 'package:flutter/material.dart'; import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; @@ -43,7 +42,7 @@ class ListingPage extends HookConsumerWidget { onPressed: () { db.managers.products.delete(product); }, - icon: Icon(Icons.delete)), + icon: const Icon(Icons.delete)), leading: CircleAvatar( backgroundColor: product.color, ), @@ -66,14 +65,14 @@ class ListingPage extends HookConsumerWidget { final store = useState(null); return SimpleDialog( - title: Text("Add Listing"), + title: const Text("Add Listing"), children: [ TextField( controller: priceTextController, - decoration: InputDecoration(labelText: "Price"), + decoration: const InputDecoration(labelText: "Price"), ), ListTile( - title: Text("Product"), + title: const Text("Product"), subtitle: product.value == null ? null : Text(product.value!.name), @@ -86,7 +85,7 @@ class ListingPage extends HookConsumerWidget { db.managers.products.all().watch()); final items = data.data ?? []; return SimpleDialog( - title: Text("Select Product"), + title: const Text("Select Product"), children: [ ...items.map((e) => ListTile( title: Text(e.name), @@ -102,7 +101,7 @@ class ListingPage extends HookConsumerWidget { }, ), ListTile( - title: Text("Store"), + title: const Text("Store"), subtitle: store.value == null ? null : Text(store.value!.name), @@ -115,7 +114,7 @@ class ListingPage extends HookConsumerWidget { db.managers.store.all().watch()); final items = data.data ?? []; return SimpleDialog( - title: Text("Select Store"), + title: const Text("Select Store"), children: [ ...items.map((e) => ListTile( title: Text(e.name), @@ -138,13 +137,13 @@ class ListingPage extends HookConsumerWidget { store: store.value!.id)); Navigator.of(ctx).pop(); }, - child: Text("Add")) + child: const Text("Add")) ], ); }); }); }, - child: Icon(Icons.add), + child: const Icon(Icons.add), ), body: body, ); diff --git a/examples/manager/lib/pages/owners.dart b/examples/manager/lib/pages/owners.dart index b313ba66..bf2646c6 100644 --- a/examples/manager/lib/pages/owners.dart +++ b/examples/manager/lib/pages/owners.dart @@ -1,10 +1,8 @@ -import 'package:flex_color_picker/flex_color_picker.dart'; import 'package:flutter/material.dart'; import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:manager/database.dart'; import 'package:manager/main.dart'; -import 'package:manager/tables.dart'; class OwnersPage extends HookConsumerWidget { const OwnersPage({super.key}); @@ -27,7 +25,7 @@ class OwnersPage extends HookConsumerWidget { onPressed: () { db.managers.owner.delete(product); }, - icon: Icon(Icons.delete)), + icon: const Icon(Icons.delete)), ); }, ); @@ -45,11 +43,11 @@ class OwnersPage extends HookConsumerWidget { final nameTextController = useTextEditingController(); return SimpleDialog( - title: Text("Add Owner"), + title: const Text("Add Owner"), children: [ TextField( controller: nameTextController, - decoration: InputDecoration(labelText: "Name"), + decoration: const InputDecoration(labelText: "Name"), ), ElevatedButton( onPressed: () { @@ -58,13 +56,13 @@ class OwnersPage extends HookConsumerWidget { )); Navigator.of(ctx).pop(); }, - child: Text("Add")) + child: const Text("Add")) ], ); }); }); }, - child: Icon(Icons.add), + child: const Icon(Icons.add), ), body: body, ); diff --git a/examples/manager/lib/pages/product.dart b/examples/manager/lib/pages/product.dart index 185f7c4d..5850350a 100644 --- a/examples/manager/lib/pages/product.dart +++ b/examples/manager/lib/pages/product.dart @@ -27,7 +27,7 @@ class ProductPage extends HookConsumerWidget { onPressed: () { db.managers.products.delete(product); }, - icon: Icon(Icons.delete)), + icon: const Icon(Icons.delete)), leading: CircleAvatar( backgroundColor: product.color, ), @@ -51,21 +51,21 @@ class ProductPage extends HookConsumerWidget { final releaseDate = useState(null); return SimpleDialog( - title: Text("Add Product"), + title: const Text("Add Product"), children: [ TextField( controller: nameTextController, - decoration: InputDecoration(labelText: "Name"), + decoration: const InputDecoration(labelText: "Name"), ), TextField( controller: descriptionTextController, - decoration: InputDecoration(labelText: "Description"), + decoration: const InputDecoration(labelText: "Description"), ), ListTile( leading: CircleAvatar( backgroundColor: color.value, ), - title: Text("Color"), + title: const Text("Color"), onTap: () { showColorPickerDialog( context, color.value ?? Colors.blue) @@ -73,8 +73,8 @@ class ProductPage extends HookConsumerWidget { }, ), ListTile( - leading: Icon(Icons.calendar_month), - title: Text("Date"), + leading: const Icon(Icons.calendar_month), + title: const Text("Date"), subtitle: releaseDate.value != null ? Text(releaseDate.value.toString()) : null, @@ -98,13 +98,13 @@ class ProductPage extends HookConsumerWidget { releaseDate: releaseDate.value!)); Navigator.of(ctx).pop(); }, - child: Text("Add")) + child: const Text("Add")) ], ); }); }); }, - child: Icon(Icons.add), + child: const Icon(Icons.add), ), body: body, ); diff --git a/examples/manager/lib/pages/store.dart b/examples/manager/lib/pages/store.dart index 07500ec4..749c6682 100644 --- a/examples/manager/lib/pages/store.dart +++ b/examples/manager/lib/pages/store.dart @@ -1,4 +1,3 @@ -import 'package:flex_color_picker/flex_color_picker.dart'; import 'package:flutter/material.dart'; import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; @@ -36,7 +35,7 @@ class StorePage extends HookConsumerWidget { onPressed: () { db.managers.store.delete(store); }, - icon: Icon(Icons.delete)), + icon: const Icon(Icons.delete)), ); }, ); @@ -55,14 +54,14 @@ class StorePage extends HookConsumerWidget { final owner = useState(null); return SimpleDialog( - title: Text("Add Store"), + title: const Text("Add Store"), children: [ TextField( controller: nameTextController, - decoration: InputDecoration(labelText: "Name"), + decoration: const InputDecoration(labelText: "Name"), ), ListTile( - title: Text("Owner"), + title: const Text("Owner"), subtitle: Text(owner.value?.name ?? "Select Owner"), onTap: () { showDialog( @@ -74,7 +73,7 @@ class StorePage extends HookConsumerWidget { final data = useStream(stream); return SimpleDialog( - title: Text("Select Owner"), + title: const Text("Select Owner"), children: [ if (data.hasData) for (final o in data.data!) @@ -98,13 +97,13 @@ class StorePage extends HookConsumerWidget { owner: owner.value!.id)); Navigator.of(ctx).pop(); }, - child: Text("Add")) + child: const Text("Add")) ], ); }); }); }, - child: Icon(Icons.add), + child: const Icon(Icons.add), ), body: body, ); diff --git a/examples/manager/pubspec.yaml b/examples/manager/pubspec.yaml index 9b309869..2088e914 100644 --- a/examples/manager/pubspec.yaml +++ b/examples/manager/pubspec.yaml @@ -33,9 +33,3 @@ dev_dependencies: flutter: uses-material-design: true - -dependency_overrides: - drift_dev: - path: C:/Users/dicke/drift/drift_dev - drift: - path: C:/Users/dicke/drift/drift