ModelRefBuilder<TSource, TResult> constructor
const
ModelRefBuilder<TSource, TResult> ({
- required ModelRefBase? modelRef(
- TSource value
- required ModelRefMixin<
TResult> document(- DocumentModelQuery modelQuery
- required TSource value(
- TSource value,
- ModelRefMixin<
TResult> document
- ModelAdapter? adapter,
- ModelAccessQuery? accessQuery,
- List<
ModelValidationQuery> ? validationQueries,
Builder for granting relationships between models and loading data.
Define ModelRefLoaderMixin to match the mix-in.
The procedure is;
- Returns a ModelRefBase containing only the relation information stored in
TSource
viamodelRef
. - Generates and returns a mixed-in DocumentBase with ModelRefMixin<TResult> based on DocumentModelQuery via
document
. - Store the DocumentBase generated via
value
inTSource
and return the updatedTSource
.
モデル間のリレーションを付与しデータのロードを行うためのビルダー。
ModelRefLoaderMixinをミックスインしたときに合わせて定義します。
手順としては
TSource
に保存されているリレーション情報のみ入ったModelRefBaseをmodelRef
経由で返します。- DocumentModelQueryを元にModelRefMixin<TResult>をミックスインしたDocumentBaseを
document
経由で生成し返します。 value
経由で生成されたDocumentBaseをTSource
に保存して、更新した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,
});