ModelRefBuilder<TSource, TResult> constructor

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

Builder for granting relationships between models and loading data.

Define ModelRefLoaderMixin to match the mix-in.

The procedure is;

  1. Returns a ModelRefBase containing only the relation 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 DocumentBase generated via value in TSource and return the updated TSource.

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

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

手順としては

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

Implementation

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