$composerBuilder<T, CurrentColumn extends GeneratedColumn<Object> , RelatedTable extends Table, RelatedColumn extends GeneratedColumn<Object> > method
T
$composerBuilder<T, CurrentColumn extends GeneratedColumn<Object> , RelatedTable extends Table, RelatedColumn extends GeneratedColumn<Object> >({
- required Composer<
GeneratedDatabase, Table> composer, - required CurrentColumn getCurrentColumn(),
- required RelatedTable referencedTable,
- required RelatedColumn getReferencedColumn(
- RelatedTable
- required T builder(
- JoinBuilder joinBuilder, {
- void $addJoinBuilderToRootComposer(
- JoinBuilder
- void $removeJoinBuilderFromRootComposer(
- JoinBuilder
inherited
A helper method for creating related composers.
For example, a filter for a categories table. There is a filter on it for filtering todos.
db.managers.categories.filter((f) => f.todos((todoFilterComposer) => todoFilterComposer.title.equals("Math Homework")))
When we filter the todos, we will be creating a todos filter composer. This function is used to build that composer. It will create he needed joins and ensure that the correct table alias name is used internaly
Implementation
T $composerBuilder<T, CurrentColumn extends GeneratedColumn,
RelatedTable extends Table, RelatedColumn extends GeneratedColumn>(
{required Composer composer,
required CurrentColumn Function(CurrentTable) getCurrentColumn,
required RelatedTable referencedTable,
required RelatedColumn Function(RelatedTable) getReferencedColumn,
required T Function(JoinBuilder joinBuilder,
{void Function(JoinBuilder)? $addJoinBuilderToRootComposer,
void Function(JoinBuilder)? $removeJoinBuilderFromRootComposer})
builder}) {
// Get the column of this table which will be used to build the join
final aliasedColumn = getCurrentColumn(_aliasedTable);
// Use the provided callbacks to create a join builder
final referencedColumn = getReferencedColumn(referencedTable);
final aliasName = $_aliasNameGenerator(aliasedColumn, referencedColumn);
final aliasedReferencedTable =
$db.alias(referencedTable as TableInfo, aliasName);
final aliasedReferencedColumn =
getReferencedColumn(aliasedReferencedTable as RelatedTable);
final referencedJoinBuilder = JoinBuilder(
currentTable: _aliasedTable,
currentColumn: aliasedColumn,
referencedTable: aliasedReferencedTable,
referencedColumn: aliasedReferencedColumn);
$addJoinBuilderToRootComposer(referencedJoinBuilder);
return builder(referencedJoinBuilder,
$addJoinBuilderToRootComposer: $addJoinBuilderToRootComposer,
$removeJoinBuilderFromRootComposer: $removeJoinBuilderFromRootComposer);
}