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
impl State
Sourcepub fn set_pragmas() -> impl Statement
pub fn set_pragmas() -> impl Statement
Enable required pragmas for execution.
Sourcepub fn start_tracking() -> impl Statement
pub fn start_tracking() -> impl Statement
Prepare the connection
for tracking.
This will create the temporary table used to track change.
Sourcepub fn stop_tracking(&self, watcher: &Watcher) -> impl Statement
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.
Sourcepub fn sync_tables(&mut self, watcher: &Watcher) -> Option<impl Statement + '_>
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.
Sourcepub fn publish_changes(&self, watcher: &Watcher) -> impl Statement
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.