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
impl State
Sourcepub fn set_pragmas<C: SqlConnection>(connection: &mut C) -> Result<(), C::Error>
pub fn set_pragmas<C: SqlConnection>(connection: &mut C) -> Result<(), C::Error>
Sourcepub async fn set_pragmas_async<C: SqlConnectionAsync>(
connection: &mut C,
) -> Result<(), C::Error>
pub async fn set_pragmas_async<C: SqlConnectionAsync>( connection: &mut C, ) -> Result<(), C::Error>
Sourcepub fn start_tracking<C: SqlConnection>(
connection: &mut C,
) -> Result<(), C::Error>
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.
Sourcepub async fn start_tracking_async<C: SqlConnectionAsync>(
connection: &mut C,
) -> Result<(), C::Error>
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.
Sourcepub fn stop_tracking<C: SqlConnection>(
&self,
connection: &mut C,
watcher: &Watcher,
) -> Result<(), C::Error>
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.
Sourcepub async fn stop_tracking_async<C: SqlConnectionAsync>(
&self,
connection: &mut C,
watcher: &Watcher,
) -> Result<(), C::Error>
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.
Sourcepub fn sync_tables<C: SqlConnection>(
&mut self,
connection: &mut C,
watcher: &Watcher,
) -> Result<(), C::Error>
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.
Sourcepub async fn sync_tables_async<C: SqlConnectionAsync>(
&mut self,
connection: &mut C,
watcher: &Watcher,
) -> Result<(), C::Error>
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.
Sourcepub fn publish_changes<C: SqlConnection>(
&mut self,
connection: &mut C,
watcher: &Watcher,
) -> Result<(), C::Error>
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.
Sourcepub async fn publish_changes_async<C: SqlConnectionAsync>(
&mut self,
connection: &mut C,
watcher: &Watcher,
) -> Result<(), C::Error>
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.