pub struct GetRequest { /* private fields */ }
Expand description
Struct used for getting a single row of data from a NoSQL table.
Implementations§
Source§impl GetRequest
impl GetRequest
Sourcepub fn new(table_name: &str) -> GetRequest
pub fn new(table_name: &str) -> GetRequest
Create a new GetRequest
.
table_name
is required and must be non-empty.
Sourcepub fn timeout(self, t: &Duration) -> Self
pub fn timeout(self, t: &Duration) -> Self
Specify the timeout value for the request.
This is optional.
If set, it must be greater than or equal to 1 millisecond, otherwise an
IllegalArgument error will be returned.
If not set, the default timeout value configured for the Handle
is used.
Sourcepub fn compartment_id(self, compartment_id: &str) -> Self
pub fn compartment_id(self, compartment_id: &str) -> Self
Cloud Service only: set the name or id of a compartment to be used for this operation.
The compartment may be specified as either a name (or path for nested compartments) or as an id (OCID).
A name (vs id) can only be used when authenticated using a specific user identity. It is not available if
the associated handle authenticated as an Instance Principal (which can be done when calling the service from
a compute instance in the Oracle Cloud Infrastructure: see HandleBuilder::cloud_auth_from_instance()
.)
If no compartment is given, the root compartment of the tenancy will be used.
Sourcepub fn key(self, key: MapValue) -> GetRequest
pub fn key(self, key: MapValue) -> GetRequest
Specify the primary key to use to find the row (record) in the table, from a MapValue
.
key
must contain all fields required to construct the primary key for the table.
Sourcepub fn row_key(self, row_key: &dyn NoSQLRow) -> Result<GetRequest, NoSQLError>
pub fn row_key(self, row_key: &dyn NoSQLRow) -> Result<GetRequest, NoSQLError>
Specify the primary key to use to find the row (record) in the table, from a native Rust struct.
row_key
must be an instance of a struct that implements the NoSQLRow
trait, which is
done by adding the NoSQLRow
derive to the struct definition. row_key
must contain
all fields required to construct the primary key for the table.
See the GetRequest::execute_into()
documentation below for an example of how to
add the NoSQLRow
derive to a struct.
Sourcepub fn consistency(self, c: Consistency) -> GetRequest
pub fn consistency(self, c: Consistency) -> GetRequest
Specify the desired Consistency
for the operation.
Sourcepub async fn execute(&self, h: &Handle) -> Result<GetResult, NoSQLError>
pub async fn execute(&self, h: &Handle) -> Result<GetResult, NoSQLError>
Execute the request, returning a GetResult
.
If the record exists in the table, GetResult::row
will be Some()
.
Sourcepub async fn execute_into(
&self,
h: &Handle,
row: &mut dyn NoSQLRow,
) -> Result<(), NoSQLError>
pub async fn execute_into( &self, h: &Handle, row: &mut dyn NoSQLRow, ) -> Result<(), NoSQLError>
Execute the request, populating an existing Rust native struct.
row
must be an instance of a struct that implements the NoSQLRow
trait, which is
done by adding the NoSQLRow
derive to the struct definition. row
will have all
of its fields populated if this method returns Ok()
:
use oracle_nosql_rust_sdk::GetRequest;
use oracle_nosql_rust_sdk::types::*;
// Assume a table was created with the following statement:
// "CREATE TABLE people (id long, name string, street string,
// city string, zip integer, primary_key(id))"
// A corresponding Rust struct could be:
#[derive(Default, Debug, NoSQLRow)]
struct Person {
pub id: i64,
pub name: String,
pub street: String,
pub city: String,
pub zip: i32,
}
// To get a specific person from the table:
let mut person = Person {
id: 123456,
..Default::default()
};
GetRequest::new("people")
.row_key(&person)?
.execute_into(&handle, &mut person).await?;
// person contains all fields
See the PutRequest::put()
documentation for an additional example of how to
add the NoSQLRow
derive to a struct.
If it is desired to also get the row metadata (version, modification time, etc), use the the
GetRequest::execute()
method instead, and then populate the native struct using
the NoSQLRow::from_map_value()
method:
use oracle_nosql_rust_sdk::GetRequest;
use oracle_nosql_rust_sdk::types::*;
// Assume a table was created with the following statement:
// "CREATE TABLE people (id long, name string, street string,
// city string, zip integer, primary_key(id))"
// A corresponding Rust struct could be:
#[derive(Default, Debug, NoSQLRow)]
struct Person {
pub id: i64,
pub name: String,
pub street: String,
pub city: String,
pub zip: i32,
}
// To get a specific person from the table:
let mut person = Person {
id: 123456,
..Default::default()
};
let get_request = GetRequest::new("people").row_key(&person)?;
let resp = get_request.execute(&handle).await?;
if let Some(mv) = resp.row() {
// resp metadata (modification time, version, etc.) valid
let result = person.from_map_value(mv);
if result.is_ok() {
// person contains all fields
} else {
// There was some error deserializing the row MapValue to a Person struct
}
}