Struct dash_sdk::platform::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 DataContract
DataContract
document_type: DocumentTypeRef<'a>
Document type
internal_clauses: InternalClauses
Internal 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: bool
Start 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
Document
s if the proof is valid. - An
Error
variant, 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>
§fn eq(&self, other: &DriveDocumentQuery<'a>) -> bool
fn eq(&self, other: &DriveDocumentQuery<'a>) -> bool
self
and other
values to be equal, and is used
by ==
.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
§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.