ModelRefListBuilder<TSource, TResult> constructor
const
ModelRefListBuilder<TSource, TResult> ({
- required Iterable<
ModelRefBase?> ? modelRef(- TSource value
- required ModelRefMixin<
TResult> document(- DocumentModelQuery modelQuery
- required TSource value(
- TSource value,
- List<
ModelRefMixin< documentsTResult> >
- ModelAdapter? adapter,
- ModelAccessQuery? accessQuery,
- 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;
- Returns a list of ModelRefBase containing only relationship information stored in
TSource
via modelRef. - Generates and returns a mixed-in DocumentBase with ModelRefMixin<TResult> based on DocumentModelQuery via document.
- Store the list of DocumentBase generated via value in
TSource
and return an updatedTSource
.
モデル間のリレーションを付与しデータのロードを行うためのビルダー。
ModelRefのリストを処理します。
ModelRefLoaderMixinをミックスインしたときに合わせて定義します。
手順としては
TSource
に保存されているリレーション情報のみ入ったModelRefBaseのリストをmodelRef経由で返します。- DocumentModelQueryを元にModelRefMixin<TResult>をミックスインしたDocumentBaseをdocument経由で生成し返します。
- 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,
});