radicle-heartwood-lfs/radicle-httpd/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
..
api radicle: implement caching for issues and patches 2024-02-23 16:03:21 +01:00
bin Move `rad-web` binary to `radicle-httpd` package 2023-11-22 11:27:11 +01:00
commands httpd: Add `--path` param to `rad-web` 2024-02-01 17:33:21 +01:00
api.rs radicle: implement caching for issues and patches 2024-02-23 16:03:21 +01:00
axum_extra.rs httpd: Add `/raw` route 2023-02-23 06:16:37 +00:00
cache.rs Rename `Id` to `RepoId` 2024-01-22 15:51:44 +01:00
commands.rs Move `rad-web` binary to `radicle-httpd` package 2023-11-22 11:27:11 +01:00
error.rs httpd: Add routes for handling embeds in issues 2023-09-19 10:00:01 +02:00
git.rs Rename `Id` to `RepoId` 2024-01-22 15:51:44 +01:00
lib.rs Rename `Id` to `RepoId` 2024-01-22 15:51:44 +01:00
main.rs Rename `Id` to `RepoId` 2024-01-22 15:51:44 +01:00
raw.rs Rename `Id` to `RepoId` 2024-01-22 15:51:44 +01:00
test.rs radicle: implement caching for issues and patches 2024-02-23 16:03:21 +01:00
tracing_extra.rs httpd: Update axum and hyper dependency 2023-12-15 12:08:43 +01:00