forked from github-mirrorer/taskchampion-sync-server
This is a bit tricky because the `Storage` trait is `Send + Sync`, but an SQLite connection is neither. Since this is not intended for large-scale use, the simple solution is just to open a new SQLite connection for each transaction. More complex alternatives include thread-local connection pools or a "worker thread" that owns the connection and communicates with other threads via channels. This also updates the InMemoryStorage implementation to be a bit more strict about transactional integrity, which led to a number of test changes.
taskchampion-sync-server-core
This crate implements the core logic of the taskchampion sync protocol.
This should be considered a reference implementation, with the protocol documentation. representing the authoritative definition of the protocol. Other implementations are encouraged.