jsonbox/
lib.rs

1//! Rust wrapper for [jsonbox.io](https://jsonbox.io/).
2//!
3//! ## Usage
4//!
5//! ```ignore
6//! // Declaration
7//! use jsonbox::{Client, Error};
8//! use serde::{Deserialize, Serialize};
9//!
10//! // Define struct
11//! #[derive(Serialize, Deserialize)]
12//! pub struct Data {
13//!     pub name: String,
14//!     pub message: String,
15//! }
16//!
17//! fn main() -> Result<(), Error> {
18//!     // Create client with <BOX_ID>
19//!     let client = Client::new("enjoy_your_first_jsonbox_rs");
20//!
21//!     // Put data
22//!     let data = Data {
23//!         name: "kuy".into(),
24//!         message: "Hello, Jsonbox!".into(),
25//!     };
26//!     let (record, meta) = client.create(&data)?;
27//!     println!("CREATE: data={:?}, meta={:?}", record, meta);
28//!
29//!     Ok(())
30//! }
31//! ```
32//!
33//! ### CREATE
34//!
35//! ```ignore
36//! let data = Data {
37//!     name: "kuy".into(),
38//!     message: "Hello, Jsonbox!".into(),
39//! };
40//! let (record, meta) = client.create(&data)?;
41//! println!("CREATE: data={:?}, meta={:?}", record, meta);
42//! ```
43//!
44//! ### READ
45//!
46//! #### all (default parameters)
47//!
48//! ```ignore
49//! let all = client.read().all::<Data>()?;
50//! println!("READ: len={}, all={:?}", all.len(), all);
51//! ```
52//!
53//! #### with specific id
54//!
55//! ```ignore
56//! let (record, meta) = client.read().id("5d876d852a780700177c0557")?;
57//! println!("READ: data={:?}, meta={:?}", record, meta);
58//! ```
59//!
60//! #### with limit
61//!
62//! ```ignore
63//! let few = client.read().limit(10).run::<Data>()?;
64//! println!("READ: len={}, few={:?}", few.len(), few);
65//! ```
66//!
67//! #### with skip
68//!
69//! ```ignore
70//! let rest = client.read().skip(5).run::<Data>()?;
71//! println!("READ: len={}, rest={:?}", rest.len(), rest);
72//! ```
73//!
74//! #### with order (asc/desc)
75//!
76//! ```ignore
77//! let asc = client.read().order_by("name").run::<Data>()?;
78//! println!("READ: len={}, asc={:?}", asc.len(), asc);
79//!
80//! let desc = client.read().order_by("count").desc().run::<Data>()?;
81//! println!("READ: len={}, desc={:?}", desc.len(), desc);
82//! ```
83//!
84//! #### with filter
85//!
86//! ```ignore
87//! let filtered = client
88//!     .read()
89//!     .filter_by("name:{}", "Json Box")
90//!     .run::<Data>()?;
91//! println!("READ: len={}, filtered={:?}", filtered.len(), filtered);
92//! ```
93//!
94//! See [baisc example](https://github.com/kuy/jsonbox-rs/blob/master/examples/basic.rs) or [official documentation](https://github.com/vasanthv/jsonbox#filtering) for more about filters.
95//!
96//! ### UPDATE
97//!
98//! ```ignore
99//! let data = Data::new("kuy", "Hello, Jsonbox!");
100//! client.update("5d876d852a780700177c0557", &data)?;
101//! println!("UPDATE: OK");
102//! ```
103//!
104//! ### DELETE
105//!
106//! ```ignore
107//! client.delete("5d876d852a780700177c0557")?;
108//! println!("DELETE: OK");
109//! ```
110
111#[cfg(test)]
112extern crate matches;
113
114mod client;
115mod error;
116mod url;
117
118pub use crate::client::query_builder::QueryBuilder;
119pub use crate::client::Client;
120pub use crate::error::{Error, Result};