pub struct Client { /* private fields */ }Expand description
KeystoneDB remote client
Implementations§
Source§impl Client
impl Client
Sourcepub async fn put(&mut self, pk: &[u8], item: Item) -> Result<()>
pub async fn put(&mut self, pk: &[u8], item: Item) -> Result<()>
Put an item with a simple partition key
§Arguments
pk- Partition keyitem- Item to store
§Example
let mut client = Client::connect("http://localhost:50051").await?;
let mut item = HashMap::new();
item.insert("name".to_string(), Value::S("Alice".to_string()));
item.insert("age".to_string(), Value::N("30".to_string()));
client.put(b"user#123", item).await?;Sourcepub async fn put_with_sk(
&mut self,
pk: &[u8],
sk: &[u8],
item: Item,
) -> Result<()>
pub async fn put_with_sk( &mut self, pk: &[u8], sk: &[u8], item: Item, ) -> Result<()>
Put an item with partition key and sort key
§Arguments
pk- Partition keysk- Sort keyitem- Item to store
Sourcepub async fn put_conditional(
&mut self,
pk: &[u8],
item: Item,
condition: impl Into<String>,
values: HashMap<String, Value>,
) -> Result<()>
pub async fn put_conditional( &mut self, pk: &[u8], item: Item, condition: impl Into<String>, values: HashMap<String, Value>, ) -> Result<()>
Put an item with a condition expression
§Arguments
pk- Partition keyitem- Item to storecondition- Condition expression (e.g., “attribute_not_exists(pk)”)values- Expression attribute values
Sourcepub async fn delete_conditional(
&mut self,
pk: &[u8],
condition: impl Into<String>,
values: HashMap<String, Value>,
) -> Result<()>
pub async fn delete_conditional( &mut self, pk: &[u8], condition: impl Into<String>, values: HashMap<String, Value>, ) -> Result<()>
Delete an item with a condition expression
§Arguments
pk- Partition keycondition- Condition expression (e.g., “attribute_exists(pk)”)values- Expression attribute values
Sourcepub async fn query(&mut self, query: RemoteQuery) -> Result<RemoteQueryResponse>
pub async fn query(&mut self, query: RemoteQuery) -> Result<RemoteQueryResponse>
Execute a query operation
§Arguments
query- Query builder with conditions
§Example
let mut client = Client::connect("http://localhost:50051").await?;
let query = RemoteQuery::new(b"user#org1")
.sk_begins_with(b"USER#")
.limit(10);
let response = client.query(query).await?;
println!("Found {} items", response.count);Sourcepub async fn scan(&mut self, scan: RemoteScan) -> Result<RemoteScanResponse>
pub async fn scan(&mut self, scan: RemoteScan) -> Result<RemoteScanResponse>
Sourcepub async fn batch_get(
&mut self,
request: RemoteBatchGetRequest,
) -> Result<RemoteBatchGetResponse>
pub async fn batch_get( &mut self, request: RemoteBatchGetRequest, ) -> Result<RemoteBatchGetResponse>
Execute a batch get operation
§Arguments
request- Batch get request with keys
§Example
let mut client = Client::connect("http://localhost:50051").await?;
let batch = RemoteBatchGetRequest::new()
.add_key(b"user#1")
.add_key(b"user#2");
let response = client.batch_get(batch).await?;
println!("Retrieved {} items", response.count);Sourcepub async fn batch_write(
&mut self,
request: RemoteBatchWriteRequest,
) -> Result<RemoteBatchWriteResponse>
pub async fn batch_write( &mut self, request: RemoteBatchWriteRequest, ) -> Result<RemoteBatchWriteResponse>
Execute a batch write operation
§Arguments
request- Batch write request with puts/deletes
§Example
let mut client = Client::connect("http://localhost:50051").await?;
let mut item = HashMap::new();
item.insert("name".to_string(), Value::S("Alice".to_string()));
let batch = RemoteBatchWriteRequest::new()
.put(b"user#1", item.clone())
.delete(b"user#old");
let response = client.batch_write(batch).await?;
println!("Batch write success: {}", response.success);Sourcepub async fn transact_get(
&mut self,
request: RemoteTransactGetRequest,
) -> Result<RemoteTransactGetResponse>
pub async fn transact_get( &mut self, request: RemoteTransactGetRequest, ) -> Result<RemoteTransactGetResponse>
Execute a transactional get operation
§Arguments
request- TransactGet request with keys to retrieve
§Example
let mut client = Client::connect("http://localhost:50051").await?;
let request = RemoteTransactGetRequest::new()
.get(b"user#1")
.get(b"user#2");
let response = client.transact_get(request).await?;
println!("Retrieved {} items", response.items.len());Sourcepub async fn transact_write(
&mut self,
request: RemoteTransactWriteRequest,
) -> Result<()>
pub async fn transact_write( &mut self, request: RemoteTransactWriteRequest, ) -> Result<()>
Execute a transactional write operation
§Arguments
request- TransactWrite request with operations
§Example
let mut client = Client::connect("http://localhost:50051").await?;
let mut item = HashMap::new();
item.insert("name".to_string(), Value::S("Alice".to_string()));
let request = RemoteTransactWriteRequest::new()
.put(b"user#1", item);
client.transact_write(request).await?;Sourcepub async fn update(
&mut self,
request: RemoteUpdate,
) -> Result<RemoteUpdateResponse>
pub async fn update( &mut self, request: RemoteUpdate, ) -> Result<RemoteUpdateResponse>
Update an item using update expression
§Arguments
request- Update request with expression
§Example
let mut client = Client::connect("http://localhost:50051").await?;
let update = RemoteUpdate::new(b"user#1")
.expression("SET age = age + :inc")
.value(":inc", Value::N("1".to_string()));
let response = client.update(update).await?;
println!("Updated item: {:?}", response.item);Sourcepub async fn execute_statement(
&mut self,
statement: impl Into<String>,
) -> Result<RemoteExecuteStatementResponse>
pub async fn execute_statement( &mut self, statement: impl Into<String>, ) -> Result<RemoteExecuteStatementResponse>
Auto Trait Implementations§
impl !Freeze for Client
impl !RefUnwindSafe for Client
impl !UnwindSafe for Client
impl Send for Client
impl Sync for Client
impl Unpin for Client
impl UnsafeUnpin for Client
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
Mutably borrows from an owned value. Read more
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§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>
Wrap the input message
T in a tonic::Request