$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>>({
  1. required Composer<GeneratedDatabase, Table> composer,
  2. required CurrentColumn getCurrentColumn(
    1. $TafsirTableTable
    ),
  3. required RelatedTable referencedTable,
  4. required RelatedColumn getReferencedColumn(
    1. RelatedTable
    ),
  5. required T builder(
    1. JoinBuilder joinBuilder, {
    2. void $addJoinBuilderToRootComposer(
      1. JoinBuilder
      )?,
    3. void $removeJoinBuilderFromRootComposer(
      1. 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);
}