44 releases

0.8.11 Sep 12, 2024
0.8.10 Jul 2, 2024
0.8.9 Jun 26, 2024
0.8.6 Jan 26, 2024
0.4.0 Jun 27, 2021

#872 in Database interfaces

Download history 161/week @ 2024-08-01 227/week @ 2024-08-08 173/week @ 2024-08-15 349/week @ 2024-08-22 188/week @ 2024-08-29 301/week @ 2024-09-05 345/week @ 2024-09-12 207/week @ 2024-09-19 208/week @ 2024-09-26 312/week @ 2024-10-03 230/week @ 2024-10-10 289/week @ 2024-10-17 164/week @ 2024-10-24 191/week @ 2024-10-31 166/week @ 2024-11-07 137/week @ 2024-11-14

701 downloads per month
Used in 2 crates

Apache-2.0

110KB
2K SLoC

Skytable client Crates.io Test docs.rs GitHub release (latest SemVer including pre-releases)

Introduction

This library is the official client for the free and open-source NoSQL database Skytable. First, go ahead and install Skytable by following the instructions here. This library supports all Skytable versions that work with the Skyhash 2 Protocol. This version of the library was tested with the latest Skytable release (release 0.8.4). Read more about supported versions here.

📁 You can find some usage examples in this folder here.

Definitive example

This library only ships with the bare minimum that is required for interacting with Skytable. Once you have Skytable installed and running, you're ready to follow this guide!

We'll start by creating a new binary application and then running actions. Create a new binary application by running:

cargo new skyapp

Tip: You can see a full list of the available actions here.

First add this to your Cargo.toml file:

skytable = "0.8"

You're ready to go!

use skytable::{
    Query, Response, Config, query,
    response::Rows,
};

#[derive(Query, Response)]
#[derive(Clone, PartialEq, Debug)] // we just do these for the assert (they are not needed)
struct User {
    userid: String,
    pass: String,
    followers: u64,
    email: Option<String>
}

let our_user = User { userid: "user".into(), pass: "pass".into(), followers: 120, email: None };

let mut db = Config::new_default("username", "password").connect().unwrap();

// insert data
let q = query!("insert into myspace.mymodel(?, ?, ?, ?)", our_user.clone());
db.query_parse::<()>(&q).unwrap();

// select data
let user: User = db.query_parse(&query!("select * from myspace.mymodel where username = ?", &our_user.userid)).unwrap();
assert_eq!(user, our_user);

// select multiple rows
let users: Rows<User> = db.query_parse(&query!("select all * from myspace.mymodel limit ?", 1000u64)).unwrap();
assert_eq!(users[0].userid, "user");

Read docs here to learn BlueQL

Version support

  • Minimum Supported Rust Version (MSRV): 1.51.0
  • Minimum Supported Skytable Version: 0.8.0

Features

  • Sync API
  • Async API
  • TLS in both sync/async APIs
  • Connection pooling for sync/async
  • Use both sync/async APIs at the same time
  • Always up-to-date

Contributing

Contributions are always welcome. To submit patches please fork this repository and submit a pull request. If you find any bugs, please open an issue here.

License

This library is distributed under the Apache-2.0 License.

Dependencies

~4–14MB
~183K SLoC