15 releases (3 stable)

1.1.0 Oct 24, 2022
1.0.1 Jul 18, 2022
0.6.0 Mar 23, 2022
0.5.0 Dec 22, 2021
0.2.1 Jul 26, 2020

#2461 in Database interfaces

Download history 40/week @ 2024-07-14 1/week @ 2024-07-21 101/week @ 2024-07-28 15/week @ 2024-09-15 13/week @ 2024-09-22 29/week @ 2024-09-29 5/week @ 2024-10-06

62 downloads per month
Used in portal

MPL-2.0 license

66KB
1.5K SLoC

Sonic Channel

Build unsafe forbidden Documentation Crates.io Crates.io

Rust client for sonic search backend.

We recommend you start with the documentation.

Installation

The MSRV is: 1.58.1

Add sonic-channel = { version = "1.0" } as a dependency in Cargo.toml.

Cargo.toml example:

[package]
name = "my-crate"
version = "0.1.0"
authors = ["Me <user@rust-lang.org>"]

[dependencies]
sonic-channel = { version = "1.0", features = ["ingest"] }

Add default-features = false to dependency, if you want to exclude default search channel.

Example usage

Search channel

Note: This example requires enabling the search feature, enabled by default.

use sonic_channel::*;

fn main() -> result::Result<()> {
    let channel = SearchChannel::start(
        "localhost:1491",
        "SecretPassword",
    )?;

    let objects = channel.query(QueryRequest::new(
        Dest::col_buc("collection", "bucket"),
        "recipe",
    ))?;
    dbg!(objects);

    Ok(())
}

Ingest channel

Note: This example requires enabling the ingest feature.

use sonic_channel::*;

fn main() -> result::Result<()> {
    let channel = IngestChannel::start(
        "localhost:1491",
        "SecretPassword",
    )?;

    let dest = Dest::col_buc("collection", "bucket").obj("object:1");
    let pushed = channel.push(PushRequest::new(dest, "my best recipe"))?;
    // or
    // let pushed = channel.push(
    //     PushRequest::new(dest, "Мой лучший рецепт").lang(Lang::Rus)
    // )?;
    dbg!(pushed);

    Ok(())
}

Control channel

Note: This example requires enabling the control feature.

use sonic_channel::*;

fn main() -> result::Result<()> {
    let channel = ControlChannel::start(
        "localhost:1491",
        "SecretPassword",
    )?;

    let result = channel.consolidate()?;
    assert_eq!(result, ());

    Ok(())
}

Available features

  • default - ["search"]
  • search - Add sonic search mode with methods
  • ingest - Add sonic ingest mode with methods
  • control - Add sonic control mode with methods

Dependencies

~2.5MB
~46K SLoC