public Mono<UpdateResult> updatePendingFriendRequestStatus(
            @NotNull Long requestId,
            @NotNull @ValidRequestStatus RequestStatus requestStatus,
            @Nullable String reason,
            @Nullable ClientSession session) {
        try {
            Validator.notNull(requestId, "requestId");
            Validator.notNull(requestStatus, "requestStatus");
            DataValidator.validRequestStatus(requestStatus);
            Validator.notEquals(requestStatus,
                    RequestStatus.PENDING,
                    "The request status must not be PENDING");
            Validator.maxLength(reason, "reason", maxResponseReasonLength);
        } catch (ResponseException e) {
            return Mono.error(e);
        }
        return userFriendRequestRepository
                .updateStatusIfPending(requestId, requestStatus, reason, session)
                .flatMap(result -> result.getModifiedCount() > 0
                        ? queryRecipientId(requestId).flatMap(recipientId -> userVersionService
                                .updateReceivedFriendRequestsVersion(recipientId)
                                .onErrorResume(t -> {
                                    LOGGER.error(
                                            "Caught an error while updating the received friend requests version of the recipient ({}) after updating a pending friend request",
                                            recipientId,
                                            t);
                                    return Mono.empty();
                                })
                                .thenReturn(result))
                        : Mono.just(result));
    }
@return The requester ID, recipient ID, creation date and status.
turms-service/src/main/java/im/turms/service/domain/user/service/UserFriendRequestService.java