# Sparkle Cache [GitHub](https://github.com/laralove143/sparkle-cache) [crates.io](https://crates.io/crates/sparkle-cache) [docs.rs](https://docs.rs/sparkle-cache/latest) A backend-agnostic Discord cache implementation for the Twilight ecosystem It provides a `Cache` trait that provides methods to get data from the cache and a `Backend` trait used to add support for a backend, refer to the documentation of each trait for more ## Usage This crate is for adding support for a backend, if you just need to use the cache, you should use one of the crates: - [Sparkle Cache Postgres](https://github.com/laralove143/sparkle-cache-postgres) - Please create a PR to add your crate to this list ## Compatibility The models don't use any arrays and every field is a primitive type, this makes it compatible with schematic backends out of the box ## Incompleteness Only the data from events are cached, though it's on the to-do list to add support for data that requires API methods This means this data can't be cached for now: - Private channels - Bans - Auto moderation rules - Integrations - Scheduled events - Invites - Webhooks - Missing data that you can create a PR to add to this list ## Support for libraries other than Twilight This doesn't depend tightly on Twilight, you can easily fork this and change the Twilight models used in it ## Versioning Because it tries to follow Twilight's version, minor versions will include breaking changes. This means you should pin it to the latest version. For example instead of `sparkle-cache = "0.14"` do `sparkle-cache = "0.14.0"`. Of course try to keep it at the latest version as updates usually contain bugfixes ## Features ### Tests Enables the testing module, it's intended for libraries implementing traits in this library, and it should be enabled only under `[dev-dependencies]`, for example ```toml [package] name = "sparkle-cache-some-backend" [dev-dependencies] sparkle-cache = { version = "x", features = ["tests"] } [dependencies] sparkle-cache = "x" ``` If the test error is related to this crate, please create an issue Stickers are currently not cached as they can't be tested because of [a bug in Twilight](https://github.com/twilight-rs/twilight/issues/1954) ## Your help is needed Any feedback or bug reports will be very useful in further development, the code is in a working state with all essential methods done but there's many possible additions that will be added as you request them!