Expand description

couchbase-lite is an ergonomic wrapper for using couchbase-lite-core from Rust.

use couchbase_lite::{
    Database, Document, DatabaseFlags,
    fallible_streaming_iterator::FallibleStreamingIterator
};

#[derive(Serialize, Deserialize, Debug)]
#[serde(tag = "type")]
struct Message {
    msg: String,
}

fn main() -> Result<(), couchbase_lite::Error> {
    let mut db = Database::open_with_flags(
        &std::env::temp_dir().join("a.cblite2"),
        DatabaseFlags::CREATE,
    )?;
    {
        let msg = Message { msg: "Test message".into() };
        let mut trans = db.transaction()?;
        let enc = trans.shared_encoder_session()?;
        let mut doc = Document::new(&msg, enc)?;
        trans.save(&mut doc)?;
        trans.commit()?;
    }
    println!("we have {} documents in db", db.document_count());
    let query = db.n1ql_query("SELECT _id FROM _default WHERE type='Message'")?;
    let mut iter = query.run()?;
    while let Some(item) = iter.next()? {
        let id = item.get_raw_checked(0)?;
        let id = id.as_str()?;
        let doc = db.get_existing(id)?;
        println!("doc id {}", doc.id());
        let db_msg: Message = doc.decode_body()?;
        println!("db_msg: {:?}", db_msg);
        assert_eq!("Test message", db_msg.msg);
    }
    Ok(())
}

Re-exports

Structs

A connection to a couchbase-lite database.

Database configuration, used during open

Enums

Enum listing possible errors.

Database’s index types

The possible states of a replicator

Traits

A fallible, streaming iterator.

Functions

Resolves a replication conflict in a document