sqlite_watcher::connection

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 SqlConnection 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<C: SqlConnection>(connection: &mut C) -> Result<(), C::Error>

Enable required pragmas for execution.

§Errors

Returns error if the pragma changes failed.

Source

pub async fn set_pragmas_async<C: SqlConnectionAsync>( connection: &mut C, ) -> Result<(), C::Error>

Enable required pragmas for execution.

§Errors

Returns error if the pragma changes failed.

Source

pub fn start_tracking<C: SqlConnection>( connection: &mut C, ) -> Result<(), C::Error>

Prepare the connection for tracking.

This will create the temporary table used to track change.

§Errors

Returns error if the initialization failed.

Source

pub async fn start_tracking_async<C: SqlConnectionAsync>( connection: &mut C, ) -> Result<(), C::Error>

Prepare the connection for tracking.

This will create the temporary table used to track change.

§Errors

Returns error if the initialization failed.

Source

pub fn stop_tracking<C: SqlConnection>( &self, connection: &mut C, watcher: &Watcher, ) -> Result<(), C::Error>

Remove all triggers and the tracking table from connection.

§Errors

Returns error if the initialization failed.

Source

pub async fn stop_tracking_async<C: SqlConnectionAsync>( &self, connection: &mut C, watcher: &Watcher, ) -> Result<(), C::Error>

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<C: SqlConnection>( &mut self, connection: &mut C, watcher: &Watcher, ) -> Result<(), C::Error>

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 async fn sync_tables_async<C: SqlConnectionAsync>( &mut self, connection: &mut C, watcher: &Watcher, ) -> Result<(), C::Error>

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<C: SqlConnection>( &mut self, connection: &mut C, watcher: &Watcher, ) -> Result<(), C::Error>

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.

Source

pub async fn publish_changes_async<C: SqlConnectionAsync>( &mut self, connection: &mut C, watcher: &Watcher, ) -> Result<(), C::Error>

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.

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