Crate light_snowflake_connector
source ·Expand description
A lightweight Snowflake connector for Rust.
Example usage:
use light_snowflake_connector::{Cell, SnowflakeClient, SnowflakeError};
use light_snowflake_connector::jwt_simple::algorithms::RS256KeyPair;
#[tokio::main]
async fn main() -> Result<(), SnowflakeError> {
let key_pair = RS256KeyPair::generate(2048)?;
let config = SnowflakeClient {
key_pair,
account: "ACCOUNT".into(),
user: "USER".into(),
database: "DB".into(),
warehouse: "WH".into(),
role: Some("ROLE".into()),
};
let result = config
.prepare("SELECT * FROM TEST_TABLE WHERE id = ? AND name = ?")
.add_binding(10)
.add_binding("Henry")
.query()
.await?;
// Get the first partition of the result, and assert that there is only one partition
let partition = result.only_partition()?;
// Get the results as a Vec<Vec<Cell>>, which is a tagged enum similar to serde_json::Value
let cells = partition.cells();
match &cells[0][0] {
Cell::Int(x) => println!("Got an integer: {}", x),
Cell::Varchar(x) => println!("Got a string: {}", x),
_ => panic!("Got something else"),
}
// Get the results as a Vec<Vec<serde_json::Value>>, which is a list of lists of JSON values
let json_table = partition.json_table();
// Get the results as a Vec<serde_json::Value>, which is a list of JSON objects
let json_objects = partition.json_objects();
Ok(())
}
Re-exports§
pub use jwt_simple;
Structs§
- The result of a DML statement
- A single in-memory chunk of a query response
- The result of SQL that returns rows
- Configuration for making connections to Snowflake
- A builder for a prepared statement (created by SnowflakeClient)
Enums§
- Cell types, used for receiving data from Snowflake.
- The format Snowflake used for serializing data in a column
- Error types for the Snowflake client