1.3 KiB
1.3 KiB
Specification for the implementation
Starting the database
- After the
createAll(), call a custom function to inspect the database and list:- Each table unique constraints
- All foreign keys
Check this research for reference.
How to specify which constraint to apply to each case?
Unique can be handled as:
- on_conflict_merge (default)
- on_conflict_overwrite
Foreign keys can be handled as:
- on_fk_deleted_delete_this (default, if cascade delete)
- on_fk_deleted_set_null (default, if optional)
- on_fk_deleted_restore_related
After merge on sync, a callback must be available to check custom rules
There must have an easy way to issue fixes and re-run the merge.
Next:
- Design the registration of constraints in the database.
- Integrate the CRDT for retrieval of changes.
- Integrate the CRDT merge logic.
- Integrate the compensation logic with the merge logic.
- Implement a regenerate process to run after migrations.
- Add pending tests marked as TODO.
- Transform this repo in a monorepo with this package and a Flutter version
that provides a custom
driftDatabasefunction that already passes the closure to add thenext_hlc_timestampfunction to the database.