1
1
use std::time::SystemTime;
2

            
3
use bonsaidb::{
4
    core::{
5
        connection::{Connection, StorageConnection},
6
        schema::{Collection, SerializedCollection},
7
    },
8
    local::{
9
        config::{Builder, StorageConfiguration},
10
        Storage,
11
    },
12
};
13
use serde::{Deserialize, Serialize};
14

            
15
16
#[derive(Debug, Clone, Serialize, Deserialize, Collection)]
16
#[collection(name = "messages")]
17
struct Message {
18
    pub timestamp: SystemTime,
19
    pub contents: String,
20
}
21

            
22
1
fn main() -> Result<(), bonsaidb::core::Error> {
23
1
    let storage =
24
1
        Storage::open(StorageConfiguration::new("basic.bonsaidb").with_schema::<Message>()?)?;
25
1
    let messages = storage.create_database::<Message>("messages", true)?;
26

            
27
1
    let private_messages = storage.create_database::<Message>("private-messages", true)?;
28

            
29
1
    insert_a_message(&messages, "Hello, World!")?;
30
1
    insert_a_message(&private_messages, "Hey!")?;
31

            
32
1
    Ok(())
33
1
}
34

            
35
// ANCHOR: reusable-code
36
fn insert_a_message<C: Connection>(
37
    connection: &C,
38
    value: &str,
39
) -> Result<(), bonsaidb::core::Error> {
40
2
    Message {
41
2
        contents: String::from(value),
42
2
        timestamp: SystemTime::now(),
43
2
    }
44
2
    .push_into(connection)?;
45
2
    Ok(())
46
2
}
47
// ANCHOR_END: reusable-code
48

            
49
1
#[test]
50
1
fn runs() {
51
1
    main().unwrap()
52
1
}