onPostloadDocument method

Future<void> onPostloadDocument(
  1. ModelAdapterDocumentQuery query,
  2. DynamicMap? value
)

This is the process after the document has been read.

Specify the query passed from the document in query.

Specify the value read in value.

ドキュメントを読み込んだ後の処理です。

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

valueに読み込んだ値を指定します。

Implementation

Future<void> onPostloadDocument(
  ModelAdapterDocumentQuery query,
  DynamicMap? value,
) 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: OnLoadedDocument at ${query.query.path} $validationQueries $value",
    );
  }
  final userId = await onRetrieveUserId();
  for (final validationQuery in validationQueries) {
    if (!validationQuery._checkPermissionWithValue(
      query: query.query,
      docId: query.query.path.last(),
      userId: userId,
      value: value,
    )) {
      throw DatabaseValidationExcepction(
        "Not permitted: OnLoadedDocument at ${query.query.path} $validationQueries $value",
      );
    }
  }
}