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