kanidmd_lib::be

Struct BackendWriteTransaction

source
pub struct BackendWriteTransaction<'a> { /* private fields */ }

Implementations§

source§

impl<'a> BackendWriteTransaction<'a>

source

pub fn create( &mut self, cid: &Cid, entries: Vec<EntrySealedNew>, ) -> Result<Vec<EntrySealedCommitted>, OperationError>

source

pub fn refresh( &mut self, entries: Vec<EntrySealedNew>, ) -> Result<Vec<EntrySealedCommitted>, OperationError>

This is similar to create, but used in the replication path as it records all the CID’s in the entry to the RUV, but without applying the current CID as a new value in the RUV. We do not want to apply the current CID in the RUV related to this entry as that could cause an infinite replication loop!

source

pub fn modify( &mut self, cid: &Cid, pre_entries: &[Arc<EntrySealedCommitted>], post_entries: &[EntrySealedCommitted], ) -> Result<(), OperationError>

source

pub fn incremental_prepare<'x>( &mut self, entry_meta: &[EntryIncrementalNew], ) -> Result<Vec<Arc<EntrySealedCommitted>>, OperationError>

source

pub fn incremental_apply( &mut self, update_entries: &[(EntrySealedCommitted, Arc<EntrySealedCommitted>)], create_entries: Vec<EntrySealedNew>, ) -> Result<(), OperationError>

source

pub fn reap_tombstones( &mut self, cid: &Cid, trim_cid: &Cid, ) -> Result<usize, OperationError>

source

pub fn update_idxmeta( &mut self, idxkeys: Vec<IdxKey>, ) -> Result<(), OperationError>

source

pub fn upgrade_reindex(&mut self, v: i64) -> Result<(), OperationError>

source

pub fn reindex(&mut self, immediate: bool) -> Result<(), OperationError>

source

pub fn restore(&mut self, src_path: &str) -> Result<(), OperationError>

source

pub fn quarantine_entry(&mut self, id: u64) -> Result<(), OperationError>

source

pub fn restore_quarantined(&mut self, id: u64) -> Result<(), OperationError>

source

pub fn clear_cache(&mut self) -> Result<(), OperationError>

source

pub fn commit(self) -> Result<(), OperationError>

source

pub fn get_db_s_uuid(&mut self) -> Result<Uuid, OperationError>

source

pub fn set_db_d_uuid(&mut self, nsid: Uuid) -> Result<(), OperationError>

Manually set a new domain UUID and store it into the DB. This is used as part of a replication refresh.

source

pub fn get_db_d_uuid(&mut self) -> Result<Uuid, OperationError>

This pulls the domain UUID from the database

source

pub fn set_db_ts_max(&mut self, ts: Duration) -> Result<(), OperationError>

source

pub fn get_db_ts_max( &mut self, ts: Duration, ) -> Result<Duration, OperationError>

Trait Implementations§

source§

impl<'a> BackendTransaction for BackendWriteTransaction<'a>

source§

type IdlLayerType = IdlArcSqliteWriteTransaction<'a>

source§

type RuvType = ReplicationUpdateVectorWriteTransaction<'a>

source§

fn get_idlayer(&mut self) -> &mut IdlArcSqliteWriteTransaction<'a>

source§

fn get_ruv(&mut self) -> &mut ReplicationUpdateVectorWriteTransaction<'a>

source§

fn get_idxmeta_ref(&self) -> &IdxMeta

source§

fn filter2idl( &mut self, filt: &FilterResolved, thres: usize, ) -> Result<(IdList, FilterPlan), OperationError>

Recursively apply a filter, transforming into IdList’s on the way. This builds a query execution log, so that it can be examined how an operation proceeded.
source§

fn filter2idl_sub( &mut self, attr: &Attribute, sub_idx_key: String, ) -> Result<(IdList, FilterPlan), OperationError>

source§

fn search( &mut self, erl: &Limits, filt: &Filter<FilterValidResolved>, ) -> Result<Vec<Arc<EntrySealedCommitted>>, OperationError>

source§

fn exists( &mut self, erl: &Limits, filt: &Filter<FilterValidResolved>, ) -> Result<bool, OperationError>

Given a filter, assert some condition exists. Basically, this is a specialised case of search, where we don’t need to load any candidates if they match. This is heavily used in uuid refint and attr uniqueness.
source§

fn retrieve_range( &mut self, ranges: &BTreeMap<Uuid, ReplCidRange>, ) -> Result<Vec<Arc<EntrySealedCommitted>>, OperationError>

source§

fn verify(&mut self) -> Vec<Result<(), ConsistencyError>>

source§

fn verify_entry_index( &mut self, e: &EntrySealedCommitted, ) -> Result<(), ConsistencyError>

source§

fn verify_indexes(&mut self) -> Vec<Result<(), ConsistencyError>>

source§

fn verify_ruv(&mut self, results: &mut Vec<Result<(), ConsistencyError>>)

source§

fn backup(&mut self, dst_path: &str) -> Result<(), OperationError>

source§

fn name2uuid(&mut self, name: &str) -> Result<Option<Uuid>, OperationError>

source§

fn externalid2uuid( &mut self, name: &str, ) -> Result<Option<Uuid>, OperationError>

source§

fn uuid2spn(&mut self, uuid: Uuid) -> Result<Option<Value>, OperationError>

source§

fn uuid2rdn(&mut self, uuid: Uuid) -> Result<Option<String>, OperationError>

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
§

impl<'a, T> AsTaggedExplicit<'a> for T
where T: 'a,

§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self>

§

impl<'a, T> AsTaggedImplicit<'a> for T
where T: 'a,

§

fn implicit( self, class: Class, constructed: bool, tag: u32, ) -> TaggedParser<'a, Implicit, Self>

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.

§

impl<T> FutureExt for T

§

fn with_context(self, otel_cx: Context) -> WithContext<Self>

Attaches the provided Context to this type, returning a WithContext wrapper. Read more
§

fn with_current_context(self) -> WithContext<Self>

Attaches the current Context to this type, returning a WithContext wrapper. Read more
§

impl<T> Instrument for T

§

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

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

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> IntoEither for T

source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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 more
source§

impl<T> IntoRequest<T> for T

source§

fn into_request(self) -> Request<T>

Wrap the input message T in a tonic::Request
§

impl<T> Pointable for T

§

const ALIGN: usize = _

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
source§

impl<T> Same for T

source§

type Output = T

Should always be Self
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.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

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
§

fn with_current_subscriber(self) -> WithDispatch<Self>

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