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
51
52
53
//! An ODM for MongoDB built upon the [mongo rust driver](https://github.com/mongodb-labs/mongo-rust-driver-prototype).
//!
//! This project makes use of `associated constants` as of `0.2.0`, so you will need to be running rust `>= 1.20`.
//!
//! An example of how you might use this library to define a model for a MongoDB collection.
//!
//! ```
//! #[derive(Serialize, Deserialize, Debug, Clone)]
//! pub struct User {
//! /// The user's unique ID.
//! #[serde(rename = "_id", skip_serializing_if = "Option::is_none")]
//! pub id: Option<bson::oid::ObjectId>,
//!
//! /// The user's unique email.
//! pub email: String,
//! }
//!
//! impl<'a> wither::Model<'a> for User {
//!
//! const COLLECTION_NAME: &'static str = "users";
//!
//! fn id(&self) -> Option<bson::oid::ObjectId> {
//! return self.id.clone();
//! }
//!
//! fn set_id(&mut self, oid: bson::oid::ObjectId) {
//! self.id = Some(oid);
//! }
//!
//! fn indexes() -> Vec<IndexModel> {
//! return vec![
//! IndexModel{
//! keys: doc!{"email" => 1},
//! options: wither::basic_index_options("unique-email", true, Some(true), None, None),
//! },
//! ];
//! }
//! }
//! ```
extern crate bson;
extern crate mongodb;
extern crate serde;
pub use Document;
pub use FindOptions;
// Expose lower symbols in the top level module.
pub use Model;
pub use basic_index_options;