| Crates.io | aegis-client |
| lib.rs | aegis-client |
| version | 0.1.7 |
| created_at | 2026-01-20 02:36:15.371447+00 |
| updated_at | 2026-01-24 03:53:11.257816+00 |
| description | Client SDK for Aegis database |
| homepage | https://automatanexus.com |
| repository | https://github.com/AutomataNexus/Aegis-DB |
| max_upload_size | |
| id | 2055686 |
| size | 140,773 |
Client SDK for the Aegis Database Platform.
aegis-client provides a Rust client library for connecting to Aegis servers. It features connection pooling, automatic reconnection, query building, and transaction support.
| Module | Description |
|---|---|
connection |
Connection management |
pool |
Connection pooling |
query |
Query builder |
transaction |
Transaction handling |
result |
Query result types |
error |
Error types |
config |
Client configuration |
[dependencies]
aegis-client = { path = "../aegis-client" }
use aegis_client::{AegisClient, ClientConfig};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
// Create client
let config = ClientConfig::new("localhost:9090")
.with_auth("demo", "demo");
let client = AegisClient::connect(config).await?;
// Execute a query
let result = client.query("SELECT * FROM users").await?;
for row in result.rows() {
println!("User: {:?}", row);
}
Ok(())
}
use aegis_client::{AegisClient, PoolConfig};
let pool_config = PoolConfig::default()
.min_connections(5)
.max_connections(20)
.idle_timeout(Duration::from_secs(300));
let client = AegisClient::with_pool(config, pool_config).await?;
// Begin transaction
let tx = client.begin().await?;
// Execute queries within transaction
tx.execute("INSERT INTO users (name) VALUES ('Alice')").await?;
tx.execute("INSERT INTO users (name) VALUES ('Bob')").await?;
// Commit (or rollback on error)
tx.commit().await?;
use aegis_client::query::QueryBuilder;
let query = QueryBuilder::select()
.columns(&["id", "name", "email"])
.from("users")
.where_clause("age > ?", 21)
.order_by("name", Order::Asc)
.limit(10)
.build();
let result = client.execute(query).await?;
// Set a key
client.kv_set("user:1", json!({"name": "Alice"})).await?;
// Get a key
let value = client.kv_get("user:1").await?;
// Delete a key
client.kv_delete("user:1").await?;
// List keys with prefix
let keys = client.kv_list("user:*").await?;
let config = ClientConfig::new("localhost:9090")
.with_auth("username", "password")
.with_timeout(Duration::from_secs(30))
.with_retry_policy(RetryPolicy::exponential(3))
.with_tls(true);
use aegis_client::error::ClientError;
match client.query("SELECT * FROM users").await {
Ok(result) => println!("Got {} rows", result.len()),
Err(ClientError::ConnectionFailed(e)) => eprintln!("Connection error: {}", e),
Err(ClientError::QueryFailed(e)) => eprintln!("Query error: {}", e),
Err(ClientError::Timeout) => eprintln!("Request timed out"),
Err(e) => eprintln!("Other error: {}", e),
}
cargo test -p aegis-client
Test count: 45 tests
Apache-2.0