Struct DriveDocumentQuery
pub struct DriveDocumentQuery<'a> {
pub contract: &'a DataContract,
pub document_type: DocumentTypeRef<'a>,
pub internal_clauses: InternalClauses,
pub offset: Option<u16>,
pub limit: Option<u16>,
pub order_by: IndexMap<String, OrderClause>,
pub start_at: Option<[u8; 32]>,
pub start_at_included: bool,
pub block_time_ms: Option<u64>,
}Expand description
Drive query struct
Fields§
§contract: &'a DataContractDataContract
document_type: DocumentTypeRef<'a>Document type
internal_clauses: InternalClausesInternal clauses
offset: Option<u16>Offset
limit: Option<u16>Limit
order_by: IndexMap<String, OrderClause>Order by
start_at: Option<[u8; 32]>Start at document id
start_at_included: boolStart at included
block_time_ms: Option<u64>Block time
Implementations§
§impl<'a> DriveDocumentQuery<'a>
impl<'a> DriveDocumentQuery<'a>
pub fn new_primary_key_single_item_query(
contract: &'a DataContract,
document_type: DocumentTypeRef<'a>,
id: Identifier,
) -> DriveDocumentQuery<'a>
pub fn new_primary_key_single_item_query( contract: &'a DataContract, document_type: DocumentTypeRef<'a>, id: Identifier, ) -> DriveDocumentQuery<'a>
Gets a document by their primary key
pub fn is_for_primary_key(&self) -> bool
pub fn is_for_primary_key(&self) -> bool
Returns true if the query clause if for primary keys.
pub fn from_value(
query_value: Value,
contract: &'a DataContract,
document_type: DocumentTypeRef<'a>,
config: &DriveConfig,
) -> Result<DriveDocumentQuery<'a>, Error>
pub fn from_value( query_value: Value, contract: &'a DataContract, document_type: DocumentTypeRef<'a>, config: &DriveConfig, ) -> Result<DriveDocumentQuery<'a>, Error>
Converts a query Value to a DriveQuery.
pub fn from_btree_map_value(
query_document: BTreeMap<String, Value>,
contract: &'a DataContract,
document_type: DocumentTypeRef<'a>,
config: &DriveConfig,
) -> Result<DriveDocumentQuery<'a>, Error>
pub fn from_btree_map_value( query_document: BTreeMap<String, Value>, contract: &'a DataContract, document_type: DocumentTypeRef<'a>, config: &DriveConfig, ) -> Result<DriveDocumentQuery<'a>, Error>
Converts a query Value to a DriveQuery.
pub fn from_decomposed_values(
where_clause: Value,
order_by: Option<Value>,
maybe_limit: Option<u16>,
start_at: Option<[u8; 32]>,
start_at_included: bool,
block_time_ms: Option<u64>,
contract: &'a DataContract,
document_type: DocumentTypeRef<'a>,
config: &DriveConfig,
) -> Result<DriveDocumentQuery<'a>, Error>
pub fn from_decomposed_values( where_clause: Value, order_by: Option<Value>, maybe_limit: Option<u16>, start_at: Option<[u8; 32]>, start_at_included: bool, block_time_ms: Option<u64>, contract: &'a DataContract, document_type: DocumentTypeRef<'a>, config: &DriveConfig, ) -> Result<DriveDocumentQuery<'a>, Error>
Converts a query Value to a DriveQuery.
pub fn from_sql_expr(
sql_string: &str,
contract: &'a DataContract,
config: Option<&DriveConfig>,
) -> Result<DriveDocumentQuery<'a>, Error>
pub fn from_sql_expr( sql_string: &str, contract: &'a DataContract, config: Option<&DriveConfig>, ) -> Result<DriveDocumentQuery<'a>, Error>
Converts a SQL expression to a DriveQuery.
pub fn start_at_document_path_and_key(
&self,
starts_at: &[u8; 32],
) -> (Vec<Vec<u8>>, Vec<u8>)
pub fn start_at_document_path_and_key( &self, starts_at: &[u8; 32], ) -> (Vec<Vec<u8>>, Vec<u8>)
Operations to construct a path query.
pub fn construct_path_query(
&self,
starts_at_document: Option<Document>,
platform_version: &PlatformVersion,
) -> Result<PathQuery, Error>
pub fn construct_path_query( &self, starts_at_document: Option<Document>, platform_version: &PlatformVersion, ) -> Result<PathQuery, Error>
Operations to construct a path query.
pub fn get_primary_key_path_query(
&self,
document_type_path: Vec<Vec<u8>>,
starts_at_document: Option<(Document, bool)>,
platform_version: &PlatformVersion,
) -> Result<PathQuery, Error>
pub fn get_primary_key_path_query( &self, document_type_path: Vec<Vec<u8>>, starts_at_document: Option<(Document, bool)>, platform_version: &PlatformVersion, ) -> Result<PathQuery, Error>
Returns a path query given a document type path and starting document.
pub fn find_best_index(
&self,
platform_version: &PlatformVersion,
) -> Result<&Index, Error>
pub fn find_best_index( &self, platform_version: &PlatformVersion, ) -> Result<&Index, Error>
Finds the best index for the query.
pub fn query_item_for_starts_at_key(
starts_at_key: Vec<u8>,
left_to_right: bool,
) -> QueryItem
pub fn query_item_for_starts_at_key( starts_at_key: Vec<u8>, left_to_right: bool, ) -> QueryItem
Returns a QueryItem given a start key and query direction.
§impl<'a> DriveDocumentQuery<'a>
impl<'a> DriveDocumentQuery<'a>
pub fn verify_proof(
&self,
proof: &[u8],
platform_version: &PlatformVersion,
) -> Result<([u8; 32], Vec<Document>), Error>
pub fn verify_proof( &self, proof: &[u8], platform_version: &PlatformVersion, ) -> Result<([u8; 32], Vec<Document>), Error>
Verifies a proof for a collection of documents.
This function takes a byte slice representing the serialized proof, verifies it, and returns a tuple consisting of the root hash and a vector of deserialized documents.
§Arguments
proof- A byte slice representing the proof to be verified.platform_version- The platform version against which to verify the proof.
§Returns
A Result containing:
- A tuple with the root hash and a vector of deserialized
Documents if the proof is valid. - An
Errorvariant, in case the proof verification fails or a deserialization error occurs.
§Errors
This function will return an Error variant if:
- The proof verification fails.
- A deserialization error occurs when parsing the serialized document(s).
§impl<'a> DriveDocumentQuery<'a>
impl<'a> DriveDocumentQuery<'a>
pub fn verify_proof_keep_serialized(
&self,
proof: &[u8],
platform_version: &PlatformVersion,
) -> Result<([u8; 32], Vec<Vec<u8>>), Error>
pub fn verify_proof_keep_serialized( &self, proof: &[u8], platform_version: &PlatformVersion, ) -> Result<([u8; 32], Vec<Vec<u8>>), Error>
Verifies the given proof and returns the root hash of the GroveDB tree and a vector of serialized documents if the verification is successful.
§Arguments
proof- A byte slice representing the proof to be verified.platform_version- The platform version against which to verify the proof.
§Returns
- On success, returns a tuple containing the root hash of the GroveDB tree and a vector of serialized documents.
- On failure, returns an Error.
§Errors
This function will return an Error if:
- The start at document is not present in proof and it is expected to be.
- The path query fails to verify against the given proof.
- Converting the element into bytes fails.
§impl<'a> DriveDocumentQuery<'a>
impl<'a> DriveDocumentQuery<'a>
pub fn verify_start_at_document_in_proof(
&self,
proof: &[u8],
is_proof_subset: bool,
document_id: [u8; 32],
platform_version: &PlatformVersion,
) -> Result<([u8; 32], Option<Document>), Error>
pub fn verify_start_at_document_in_proof( &self, proof: &[u8], is_proof_subset: bool, document_id: [u8; 32], platform_version: &PlatformVersion, ) -> Result<([u8; 32], Option<Document>), Error>
Verifies if a document exists at the beginning of a proof, and returns the root hash and the optionally found document.
§Arguments
proof- A byte slice containing the proof data.is_proof_subset- A boolean indicating whether the proof is a subset query or not.document_id- A byte_32 array, representing the ID of the document to start at.platform_version- The platform version against which to verify the proof.
§Returns
A Result with a tuple containing:
- The root hash of the verified proof.
- An
Option<Document>containing the found document if available.
§Errors
This function returns an Error in the following cases:
- If the proof is corrupted (wrong path, wrong key, etc.).
- If the provided proof has an incorrect number of elements.
Trait Implementations§
§impl<'a> Clone for DriveDocumentQuery<'a>
impl<'a> Clone for DriveDocumentQuery<'a>
§fn clone(&self) -> DriveDocumentQuery<'a>
fn clone(&self) -> DriveDocumentQuery<'a>
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more§impl<'a> Debug for DriveDocumentQuery<'a>
impl<'a> Debug for DriveDocumentQuery<'a>
source§impl<'a> From<&'a DriveDocumentQuery<'a>> for DocumentQuery
impl<'a> From<&'a DriveDocumentQuery<'a>> for DocumentQuery
source§fn from(value: &'a DriveDocumentQuery<'a>) -> Self
fn from(value: &'a DriveDocumentQuery<'a>) -> Self
source§impl<'a> From<DriveDocumentQuery<'a>> for DocumentQuery
impl<'a> From<DriveDocumentQuery<'a>> for DocumentQuery
source§fn from(value: DriveDocumentQuery<'a>) -> Self
fn from(value: DriveDocumentQuery<'a>) -> Self
§impl<'a> PartialEq for DriveDocumentQuery<'a>
impl<'a> PartialEq for DriveDocumentQuery<'a>
source§impl<'a> Query<DocumentQuery> for DriveDocumentQuery<'a>
impl<'a> Query<DocumentQuery> for DriveDocumentQuery<'a>
source§impl<'a> TryFrom<&'a DocumentQuery> for DriveDocumentQuery<'a>
impl<'a> TryFrom<&'a DocumentQuery> for DriveDocumentQuery<'a>
impl<'a> StructuralPartialEq for DriveDocumentQuery<'a>
Auto Trait Implementations§
impl<'a> Freeze for DriveDocumentQuery<'a>
impl<'a> RefUnwindSafe for DriveDocumentQuery<'a>
impl<'a> Send for DriveDocumentQuery<'a>
impl<'a> Sync for DriveDocumentQuery<'a>
impl<'a> Unpin for DriveDocumentQuery<'a>
impl<'a> UnwindSafe for DriveDocumentQuery<'a>
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit)§impl<T> Conv for T
impl<T> Conv for T
§impl<T> CostsExt for T
impl<T> CostsExt for T
§fn wrap_with_cost(self, cost: OperationCost) -> CostContext<Self>where
Self: Sized,
fn wrap_with_cost(self, cost: OperationCost) -> CostContext<Self>where
Self: Sized,
CostContext object with provided costs.§fn wrap_fn_cost(
self,
f: impl FnOnce(&Self) -> OperationCost,
) -> CostContext<Self>where
Self: Sized,
fn wrap_fn_cost(
self,
f: impl FnOnce(&Self) -> OperationCost,
) -> CostContext<Self>where
Self: Sized,
CostContext object with costs computed using the
value getting wrapped.§impl<T> FmtForward for T
impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self to use its Binary implementation when Debug-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self to use its Display implementation when
Debug-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self to use its LowerExp implementation when
Debug-formatted.§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self to use its LowerHex implementation when
Debug-formatted.§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self to use its Octal implementation when Debug-formatted.§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self to use its Pointer implementation when
Debug-formatted.§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self to use its UpperExp implementation when
Debug-formatted.§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self to use its UpperHex implementation when
Debug-formatted.§fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
source§impl<T> IntoEither for T
impl<T> IntoEither for T
source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moresource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moresource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read more§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read more§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self, then passes self.as_ref() into the pipe function.§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self, then passes self.as_mut() into the pipe
function.§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self, then passes self.deref() into the pipe function.§impl<T> Tap for T
impl<T> Tap for T
§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B> of a value. Read more§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B> of a value. Read more§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R> view of a value. Read more§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R> view of a value. Read more§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target of a value. Read more§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target of a value. Read more§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap() only in debug builds, and is erased in release builds.§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut() only in debug builds, and is erased in release
builds.§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow() only in debug builds, and is erased in release
builds.§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut() only in debug builds, and is erased in release
builds.§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref() only in debug builds, and is erased in release
builds.§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut() only in debug builds, and is erased in release
builds.§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref() only in debug builds, and is erased in release
builds.