radicle-heartwood-lfs/radicle-remote-helper/src
Fintan Halpenny 985b0af3f6
radicle: implement caching for issues and patches
Implement caching for the `Issue` and `Patch` COB. This is achieved by
having the `Transaction::initial` and `Transaction::commit` methods
take a cache which can update the newly created/updated object. The
`Store::remove` method also takes the cache for removing the object
from the cache, as well as the repository.

This meant that the `*Mut` types for the respective COBs are required
to carry a cache alongside the repository store. Identities will not
be cached, and so this is always set to `NoCache` -- which performs no
caching, and always succeeds.

To perform cache reading for issues and patches, the `cache::Issues`
and `cache::Patches` traits are introduced. They capture the minimal
amount of methods that are needed for the `rad issue` and `rad patch`
CLI commands.

The implementor for each of these traits is there respective `Cache`
types, which combines their backing repository store and the SQLite
database. They both provide convenience methods:
- `create` (and `draft` for patches)
- `get_mut`
- `remove`
which can be used instead of their repository store counterparts.

All uses of the repository stores (where needed) are replaced with
`Cache` types.

Signed-off-by: Fintan Halpenny <fintan.halpenny@gmail.com>
X-Clacks-Overhead: GNU Terry Pratchett
2024-02-23 16:03:21 +01:00
..
fetch.rs cli: use `git` for anonymous fetch 2024-01-02 15:04:49 +01:00
git-remote-rad.rs cli: Have a way of enabling logging in helper 2024-01-17 17:34:30 +01:00
lib.rs radicle: implement caching for issues and patches 2024-02-23 16:03:21 +01:00
list.rs radicle: implement caching for issues and patches 2024-02-23 16:03:21 +01:00
push.rs radicle: implement caching for issues and patches 2024-02-23 16:03:21 +01:00