Crates.io | welds-connections |
lib.rs | welds-connections |
version | 0.4.8 |
source | src |
created_at | 2024-03-06 01:55:09.379194 |
updated_at | 2024-11-22 12:14:08.375303 |
description | An async ORM for (postgres, mssql, mysql, sqlite) |
homepage | |
repository | https://github.com/weldsorm/welds |
max_upload_size | |
id | 1164261 |
size | 158,401 |
It allows you to talk to sqlx and tiberius over traits in a simple common way.
/// The common trait for database connections and transactions.
pub trait Client {
/// Execute a sql command. returns the number of rows that were affected
async fn execute(&self, sql: &str, params: &[&(dyn Param + Sync)]) -> Result<ExecuteResult>;
/// Runs SQL and returns a collection of rows from the database.
async fn fetch_rows(&self, sql: &str, params: &[&(dyn Param + Sync)]) -> Result<Vec<Row>>;
/// Run several `fetch_rows` command on the same connection in the connection pool
async fn fetch_many(&self, args: &[Fetch]) -> Result<Vec<Vec<Row>>>;
// Returns what syntax (dialect) of SQL the backend is expecting
fn syntax(&self) -> Syntax;
}
Thats it.
Thats All this crate is.
You get this for:
MySql and its transactions
Postgres and its transactions
Sqlite and its transactions
Mssql and its transactions
You can get a transaction with the TransactStart Trait.
use welds_connections::{Client, TransactStart};
#[tokio::main]
async fn main() -> std::result::Result<(), Box<dyn std::error::Error>> {
let url = "sqlite://./test.sqlite";
let client = welds_connections::sqlite::get_conn(url).await?;
let transaction = client.begin().await?;
transaction.rollback.await?;
}
use welds_connections::{Client, TransactStart};
#[tokio::main]
async fn main() -> std::result::Result<(), Box<dyn std::error::Error>> {
let url = "sqlite://./test.sqlite";
let client = welds_connections::sqlite::get_conn(url).await?;
let sql = "SELECT name from people where name like ?";
let filter = "James%".to_string();
let rows = client.fetch_rows(sql, &[&filter]).await?;
for row in rows {
let name: String = row.get("name").unwrap();
println!("ROW: {:?}", &name);
}
}