[WIP] Trigger Based Table Diff Tracking #663
Draft
+1,697
−527
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Overview
We currently expose watched query functionality which allows watching changes of SQLite query's result set. This PR adds methods which can be used to track and process changes to individual SQLite tables.
Temporary SQLite triggers and tables are used to populate a set of table change operations. Records for table row
INSERT
, UPDATEand
DELETE` operations are created as changes occur.This PR currently adds 2 new SQLite trigger based methods.
Creating a Diff Trigger
createDiffTrigger
Configures temporary SQLite triggers which populate a temporary SQLite table with operations as they occur.Processing Change Operations
A more convenient
trackTableDiff
method usescreateDiffTrigger
to get table changes, but adds additional logic to consume the changes as they occur.The example below uses triggers to process
todo
records as they are inserted/created.Docs
For more info see the unit tests and API doc comments.