This section provides practical examples of how to use the SWquery SDK to query and manage on-chain data. These examples are designed to help you quickly integrate the SDK into your applications.
1. Setting Up the SDK
Initialize the SWquery client in your Rust application:
use swquery::SWqueryClient;fnmain() {// Create an instance of the SWquery clientlet client =SWqueryClient::new("your_api_key");println!("SWquery SDK initialized!");}
2. Querying a Wallet
Perform a basic natural language query on a single wallet:
use swquery::SWqueryClient;fnmain() {let client =SWqueryClient::new("your_api_key");let wallet_address ="YourWalletAddressHere";let query ="List all transactions over 1 SOL in the past week";match client.query_wallet(wallet_address, query) {Ok(result) =>println!("Query Result: {:?}", result),Err(error) =>eprintln!("Error: {:?}", error), }}
3. Querying Multiple Wallets
Query transactions across multiple wallets and combine results:
use swquery::SWqueryClient;fnmain() {let client =SWqueryClient::new("your_api_key");let wallets =vec!["WalletAddress1", "WalletAddress2"];let query ="Find all transactions received in December 2024";match client.query_multiple_wallets(wallets, query) {Ok(results) =>println!("Combined Results: {:?}", results),Err(error) =>eprintln!("Error: {:?}", error), }}
4. Custom Prompt Queries
Tailor the SDK’s behavior by providing custom natural language prompts:
use swquery::SWqueryClient;fnmain() {let client =SWqueryClient::new("your_api_key");let wallet_address ="YourWalletAddressHere";let custom_prompt ="Summarize all transactions from staking rewards";match client.query_wallet_with_prompt(wallet_address, custom_prompt) {Ok(result) =>println!("Custom Query Result: {:?}", result),Err(error) =>eprintln!("Error: {:?}", error), }}
5. Handling Errors Gracefully
Ensure smooth operation by handling errors during queries:
use swquery::SWqueryClient;fnmain() {let client =SWqueryClient::new("your_api_key");let wallet_address ="YourWalletAddressHere";let query ="Invalid query example";match client.query_wallet(wallet_address, query) {Ok(result) =>println!("Query Result: {:?}", result),Err(error) =>match error { swquery::Error::WalletNotFound=>eprintln!("Error: Wallet not found"), swquery::Error::QueryParsingFailed=>eprintln!("Error: Failed to parse query"), _ =>eprintln!("Error: An unexpected error occurred"), }, }}
6. Visualizing Query Results
Integrate query results with your application’s visualization layer. For example:
use swquery::SWqueryClient;fnmain() {let client =SWqueryClient::new("your_api_key");let wallet_address ="YourWalletAddressHere";let query ="List all transactions over 5 SOL in the last month";match client.query_wallet(wallet_address, query) {Ok(results) => {// Simulating visualization with a simple printfor transaction in results.transactions {println!("Date: {}, Amount: {}, Type: {}", transaction.date, transaction.amount, transaction.transaction_type ); } }Err(error) =>eprintln!("Error: {:?}", error), }}
7. Debugging and Logs
Enable detailed logs for easier debugging during development:
use swquery::SWqueryClient;fnmain() {letmut client =SWqueryClient::new("your_api_key");// Enable logging client.enable_logging(true);let wallet_address ="YourWalletAddressHere";let query ="Fetch transactions with amounts greater than 10 SOL";match client.query_wallet(wallet_address, query) {Ok(result) =>println!("Query Result: {:?}", result),Err(error) =>eprintln!("Error: {:?}", error), }}