Crates.io | welds |
lib.rs | welds |
version | 0.4.8 |
source | src |
created_at | 2023-04-13 01:03:53.698865 |
updated_at | 2024-11-22 12:14:55.539347 |
description | An async ORM for (postgres, mssql, mysql, sqlite) |
homepage | |
repository | https://github.com/weldsorm/welds |
max_upload_size | |
id | 837757 |
size | 347,265 |
Under the hood welds uses:
Compatibility:
0.4.*
line of welds is compiled with sqlx 0.80.3.*
line of welds is compiled with sqlx 0.7#[derive(Debug, WeldsModel)]
#[welds(schema= "inventory", table = "products")]
#[welds(BelongsTo(seller, super::people::People, "seller_id"))]
pub struct Product {
#[welds(rename = "product_id")]
#[welds(primary_key)]
pub id: i32,
pub name: String,
pub seller_id: Option<i32>,
pub description: Option<String>,
pub price: Option<f32>,
}
let url = "postgres://postgres:password@localhost:5432";
let client = welds::connections::postgres::connect(url).await.unwrap();
let products = Product::where_col(|p| p.price.equal(3.50)).run(&client).await?;
let client = welds::connections::mssql::connect(url).await.unwrap();
let sellers = Product::where_col(|product| product.price.equal(3.50))
.map_query(|product| product.seller )
.where_col(|seller| seller.name.ilike("%Nessie%") )
.run(&client).await?;
let client = welds::connections::sqlite::connect(url).await.unwrap();
let mut cookies = Product::new();
cookies.name = "cookies".to_owned();
// Creates the product cookie
cookies.save.await(&client)?;
cookies.description = "Yum".to_owned();
// Updates the Cookies
cookies.save.await(&client)?;
Both Tiberius
and sqlx
support types from external create such at chrono
and serde_json
. These types need to be enabled in the underlying crate to use.
In order to use types that are external the appropriate feature needs to be enabled in these underlying frameworks.
We have chosen to leave this up to you as the developer so you have full control over your underlying SQLX/Tiberius setup.
In order to get these types to work you will need to:
cargo add chrono
cargo add sqlx --features=chrono
cargo add welds-connections --features=mssql,mssql-chrono
welds-connections features needed for mssql (tiberius):
mssql-chrono
mssql-time
mssql-rust_decimal
mssql-bigdecimal
For more good examples check out the examples repo.