onPreloadCollection method

Future<void> onPreloadCollection(
  1. ModelAdapterCollectionQuery query
)

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",
      );
    }
  }
}