onPreloadCollection method
This is the process before loading the collection.
Specify the query passed from the collection in query
.
コレクションを読み込むまえの処理です。
query
にコレクションから渡されたクエリを指定します。
Implementation
Future<void> onPreloadCollection(ModelAdapterCollectionQuery query) async {
final validationQueries = query.query.validationQueries
?.where(
(e) =>
e.permission == ModelValidationQueryPermissionType.allowRead ||
e.permission ==
ModelValidationQueryPermissionType.allowReadCollection,
)
.toList()
.sortTo((a, b) {
final permission = a.permission.index.compareTo(b.permission.index);
if (permission != 0) {
return permission;
}
return a.user.index.compareTo(b.user.index);
});
if (validationQueries == null) {
return;
}
if (validationQueries.isEmpty) {
throw DatabaseValidationExcepction(
"Not permitted: OnLoadCollection at ${query.query.path} $validationQueries",
);
}
final userId = await onRetrieveUserId();
for (final validationQuery in validationQueries) {
if (!validationQuery._checkPermission(
query: query.query,
userId: userId,
)) {
throw DatabaseValidationExcepction(
"Not permitted: OnLoadCollection at ${query.query.path} $validationQueries",
);
}
}
}