radicle-heartwood-lfs/radicle-tools/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
..
rad-agent.rs cli: Make key encryption optional 2023-07-20 10:40:15 +02:00
rad-cli-demo.rs cli: Choose repo visibility on init 2023-09-03 17:21:37 +02:00
rad-init.rs node: Implement private repos 2023-09-01 12:13:45 +02:00
rad-merge.rs radicle: implement caching for issues and patches 2024-02-23 16:03:21 +01:00
rad-push.rs cli: Tell the user when canonical head is updated 2024-01-05 12:09:30 +01:00
rad-self.rs radicle: Move some functions to `Home` type 2023-11-03 17:08:18 +01:00
rad-set-canonical-refs.rs cli: Tell the user when canonical head is updated 2024-01-05 12:09:30 +01:00