Struct State

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

Building block to provide tracking capabilities to any type of sqlite connection which implements the SqlExecutor trait.

§Initialization

It’s recommended to call State::set_pragmas() to enable in memory temporary tables and recursive triggers. If your connection already has this set up, this can be skipped.

Next you need to create the infrastructure to track changes. This can be accomplished with State::start_tracking().

§Tracking changes

To make sure we only track required tables always call State::sync_tables() before a query/statement or a transaction.

When the query/statement or transaction are completed, call State::publish_changes() to check which tables have been modified and send this information to the watcher.

§Disable Tracking

If you wish to remove all the tracking infrastructure from a connection on which State::start_tracking() was called, then call State::stop_tracking().

§See Also

The Connection type provided by this crate provides an example integration implementation.

Implementations§

Source§

impl State

Source

pub fn set_pragmas() -> impl Statement

Enable required pragmas for execution.

Source

pub fn start_tracking() -> impl Statement

Prepare the connection for tracking.

This will create the temporary table used to track change.

Source

pub fn stop_tracking(&self, watcher: &Watcher) -> impl Statement

Remove all triggers and the tracking table from connection.

§Errors

Returns error if the initialization failed.

Source

pub fn new() -> Self

Create a new instance without initializing any connection.

Source

pub fn sync_tables(&mut self, watcher: &Watcher) -> Option<impl Statement + '_>

Synchronize the table list from the watcher.

This method will create new triggers for tables that are not being watched over this connection and remove triggers for tables that are no longer observed by the watcher.

§Errors

Returns error if creation or removal of triggers failed.

Source

pub fn publish_changes(&self, watcher: &Watcher) -> impl Statement

Check the tracking table and report finding to the Watcher.

The table where the changes are tracked is read and reset. Any table that has been modified will be communicated to the Watcher, which in turn will notify the respective TableObserver.

§Errors

Returns error if we failed to read from the temporary tables.

Trait Implementations§

Source§

impl Debug for State

Source§

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

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

impl Default for State

Source§

fn default() -> State

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

Auto Trait Implementations§

§

impl Freeze for State

§

impl RefUnwindSafe for State

§

impl Send for State

§

impl Sync for State

§

impl Unpin for State

§

impl UnwindSafe for State

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