Struct GetRequest

Source
pub struct GetRequest { /* private fields */ }
Expand description

Struct used for getting a single row of data from a NoSQL table.

Implementations§

Source§

impl GetRequest

Source

pub fn new(table_name: &str) -> GetRequest

Create a new GetRequest.

table_name is required and must be non-empty.

Source

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.

Source

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.

Source

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.

Source

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.

Source

pub fn consistency(self, c: Consistency) -> GetRequest

Specify the desired Consistency for the operation.

Source

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().

Source

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
    }
}

Trait Implementations§

Source§

impl Debug for GetRequest

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for GetRequest

Source§

fn default() -> GetRequest

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> ErasedDestructor for T
where T: 'static,

Source§

impl<T> MaybeSendSync for T