pub struct RGet<'db, 'txn> { /* private fields */ }
Expand description
Get a value from the database.
Implementations§
Source§impl RGet<'_, '_>
impl RGet<'_, '_>
Sourcepub fn primary<T: Input>(&self, key: impl InnerKeyValue) -> Result<Option<T>>
pub fn primary<T: Input>(&self, key: impl InnerKeyValue) -> Result<Option<T>>
Get a value from the database by primary key.
§Example
use native_db::*;
use native_model::{native_model, Model};
use serde::{Deserialize, Serialize};
#[derive(Serialize, Deserialize)]
#[native_model(id=1, version=1)]
#[native_db]
struct Data {
#[primary_key]
id: u64,
}
fn main() -> Result<(), db_type::Error> {
let mut builder = DatabaseBuilder::new();
builder.define::<Data>()?;
let db = builder.create_in_memory()?;
// Open a read transaction
let r = db.r_transaction()?;
// Get a value by primary key
let _value: Option<Data> = r.get().primary(1u64)?;
Ok(())
}
Sourcepub fn secondary<T: Input>(
&self,
key_def: impl KeyDefinition<DatabaseSecondaryKeyOptions>,
key: impl InnerKeyValue,
) -> Result<Option<T>>
pub fn secondary<T: Input>( &self, key_def: impl KeyDefinition<DatabaseSecondaryKeyOptions>, key: impl InnerKeyValue, ) -> Result<Option<T>>
Get a value from the database by secondary key.
/!\ The secondary key must be unique
else this method will return an error SecondaryKeyConstraintMismatch
.
If the secondary key is not unique, use scan()
instead.
Anatomy of a secondary key it is a enum
with the following structure: <table_name>Key::<name>
.
§Example
use native_db::*;
use native_model::{native_model, Model};
use serde::{Deserialize, Serialize};
#[derive(Serialize, Deserialize)]
#[native_model(id=1, version=1)]
#[native_db]
struct Data {
#[primary_key]
id: u64,
#[secondary_key(unique)] // Must be unique to use get()
name: String,
}
fn main() -> Result<(), db_type::Error> {
let mut builder = DatabaseBuilder::new();
builder.define::<Data>()?;
let db = builder.create_in_memory()?;
// Open a read transaction
let r = db.r_transaction()?;
// Get a value by primary key
let _value: Option<Data> = r.get().secondary(DataKey::name, "test")?;
Ok(())
}
Auto Trait Implementations§
impl<'db, 'txn> Freeze for RGet<'db, 'txn>
impl<'db, 'txn> !RefUnwindSafe for RGet<'db, 'txn>
impl<'db, 'txn> Send for RGet<'db, 'txn>
impl<'db, 'txn> Sync for RGet<'db, 'txn>
impl<'db, 'txn> Unpin for RGet<'db, 'txn>
impl<'db, 'txn> !UnwindSafe for RGet<'db, 'txn>
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