1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
//! This is a normalized cache exchange for the [`artemis`](../artemis/index.html) GraphQL Client.
//! This is a drop-in replacement for the default [`CacheExchange`] that, instead of document
//! caching, caches normalized data by keys and connections between data.
//!
//! `artemis` is already quite a comprehensive GraphQL client. However in several cases it may be
//! desirable to have data update across the entirety of an app when a response updates some known
//! pieces of data.
//!
//! # Quick Start
//!
//! After installing this crate, change the default `artemis` Client like from something like this:
//!
//! ```
//! let client = artemis::ClientBuilder::new("http://0.0.0.0")
//! .with_default_exchanges()
//! .build();
//! ```
//!
//! to this
//!
//! ```
//! use artemis::default_exchanges::{FetchExchange, DedupExchange};
//! use artemis_normalized_cache::NormalizedCacheExchange;
//!
//! let client = artemis::ClientBuilder::new("http://0.0.0.0")
//! .with_exchange(FetchExchange)
//! .with_exchange(NormalizedCacheExchange::new())
//! .with_exchange(DedupExchange)
//! .build();
//! ```
//!
//! TODO: Don't steal urlq's docs you plagiarist
extern crate async_trait;
extern crate lazy_static;
pub use NormalizedCacheExchange;
pub use QueryStore;
pub use ;