In case of an outdated cobs cache we display a banner on top of the
patch or issue listing, to allow users to rebuild the cobs cache of a
repo similar to running `rad patch cache`
After rebuilding we fetch the issues or patches from the start.
Small caveat with patches:
The banner can only be shown after a user fetched all patches from the
backend, so we are sure we tried to fetch all of them.
So we don't materialize the whole list multiple times especially when
paginating. Mostly written by Finto, I was just driving.
Co-authored-by: Fintan Halpenny <fintan.halpenny@gmail.com>
To start making the backend codebase more future proof, I started
introducing the hexagonal architecture concept, of having `Service`
traits that is the public API and inner traits like `Storage`,
`Metrics`, etc. that can be implemented by different adapters like
`Sqlite`.
This is a first development in this direction.
- Add `migrate::ignore` callback to `cob::cache` calls
- Remove the `Verified` trait from the `Doc` struct
- Update `Doc` fields with read-only methods
Great explanation by @LarsWirzenius on the why
> Async code in Rust runs in one or more threads. Usually there's a
small number of threads that are multiplexed between different async
functions. The async executor chooses what threads to use and which
thread runs which async code. If the async code takes a long time, such
as by calling std::thread::sleep, the whole thread stops doing anything
else, and then no other async code runs in that thread, either.
- Improves the hierarchy of types into separate folders
- Improve the types generation making more structs and less serde_json
- Adding more optional values to the tauri commands