onPreloadDocument method

Future<void> onPreloadDocument(
  1. ModelAdapterDocumentQuery query
)

This is the process before loading the document.

Specify the query passed from the document in query.

ドキュメントを読み込むまえの処理です。

queryにドキュメントから渡されたクエリを指定します。

Implementation

Future<void> onPreloadDocument(ModelAdapterDocumentQuery query) async {
  final validationQueries = query.query.validationQueries
      ?.where(
        (e) =>
            e.permission == ModelValidationQueryPermissionType.allowRead ||
            e.permission ==
                ModelValidationQueryPermissionType.allowReadDocument,
      )
      .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: OnLoadDocument 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: OnLoadDocument at ${query.query.path} $validationQueries",
      );
    }
  }
}