nativeclick 0.26.9

Nativeclick is a pure Rust SDK for working with Clickhouse with the native protocol in async environments with minimal boilerplate and maximal performance.
Documentation
use std::time::Duration;

use nativeclick::ClickhouseLock;

#[tokio::test]
async fn test_client() {
    let _ = env_logger::builder()
        .filter_level(log::LevelFilter::Info)
        .try_init();
    let client1 = super::get_client().await;
    let client2 = super::get_client().await;

    let lock1 = ClickhouseLock::new(client1.clone(), "test");
    let handle = lock1.lock().await.unwrap();
    println!("lock1 locked");

    let lock2 = ClickhouseLock::new(client2.clone(), "test");
    assert!(
        tokio::time::timeout(Duration::from_secs(1), lock2.lock())
            .await
            .is_err()
    );

    println!("lock1 unlocking");
    tokio::time::sleep(Duration::from_secs(1)).await;
    handle.unlock().await.unwrap();
    println!("lock1 unlocked");
    println!("lock2 locking...");
    let handle2 = lock2.lock().await.unwrap();
    println!("lock2 locked");
    handle2.unlock().await.unwrap();
}