ModelRefListBuilder<TSource, TResult> constructor

const ModelRefListBuilder<TSource, TResult>({
  1. required Iterable<ModelRefBase?>? modelRef(
    1. TSource value
    ),
  2. required ModelRefMixin<TResult> document(
    1. DocumentModelQuery modelQuery
    ),
  3. required TSource value(
    1. TSource value,
    2. List<ModelRefMixin<TResult>> documents
    ),
  4. ModelAdapter? adapter,
  5. ModelAccessQuery? accessQuery,
  6. List<ModelValidationQuery>? validationQueries,
})

Builder for granting relationships between models and loading data.

Processes a list of ModelRef.

Define ModelRefLoaderMixin to match the mix-in.

The procedure is;

  1. Returns a list of ModelRefBase containing only relationship information stored in TSource via modelRef.
  2. Generates and returns a mixed-in DocumentBase with ModelRefMixin<TResult> based on DocumentModelQuery via document.
  3. Store the list of DocumentBase generated via value in TSource and return an updated TSource.

モデル間のリレーションを付与しデータのロードを行うためのビルダー。

ModelRefのリストを処理します。

ModelRefLoaderMixinをミックスインしたときに合わせて定義します。

手順としては

  1. TSourceに保存されているリレーション情報のみ入ったModelRefBaseのリストをmodelRef経由で返します。
  2. DocumentModelQueryを元にModelRefMixin<TResult>をミックスインしたDocumentBasedocument経由で生成し返します。
  3. value経由で生成されたDocumentBaseのリストをTSourceに保存して、更新したTSourceを返すようにします。
@override
List<ModelRefBuilderBase<StreamModel>> get builder => [
      ModelRefListBuilder(
        modelRef: (value) => value.userList,
        document: (query) => UserModelDocument(query),
        value: (value, documents) {
          return value.copyWith(userList: documents);
        },
      )
    ];

Implementation

const ModelRefListBuilder({
  required this.modelRef,
  required this.document,
  required this.value,
  this.adapter,
  this.accessQuery,
  this.validationQueries,
});