pub trait TransactionOps {
// Required methods
async fn insert<T>(&self, entity: T) -> Result<u64, Error>
where T: SqlQuery + SqlParams + Debug;
async fn update<T>(&self, entity: T) -> Result<u64, Error>
where T: SqlQuery + UpdateParams + SqlParams + Debug;
async fn delete<T>(&self, entity: T) -> Result<u64, Error>
where T: SqlQuery + SqlParams + Debug;
async fn get<T>(&self, params: &T) -> Result<T, Error>
where T: SqlQuery + FromRow + SqlParams + Debug;
async fn get_all<T>(&self, params: &T) -> Result<Vec<T>, Error>
where T: SqlQuery + FromRow + SqlParams + Debug;
async fn select<T, R, F>(&self, entity: T, to_model: F) -> Result<R, Error>
where T: SqlQuery + SqlParams + Debug,
F: FnOnce(&Row) -> Result<R, Error>;
async fn select_all<T, R, F>(
&self,
entity: T,
to_model: F,
) -> Result<Vec<R>, Error>
where T: SqlQuery + SqlParams + Debug,
F: Fn(&Row) -> R;
}
Expand description
TransactionOps trait, Transaction için CRUD işlemlerini extension method olarak sağlar Bu şekilde, herhangi bir Transaction nesnesi üzerinde doğrudan CRUD işlemleri yapılabilir
Required Methods§
Sourceasync fn insert<T>(&self, entity: T) -> Result<u64, Error>
async fn insert<T>(&self, entity: T) -> Result<u64, Error>
Insert method, yeni bir kayıt eklemek için kullanılır
§Parameters
entity
- Eklenecek varlık, SqlQuery ve SqlParams trait’lerini implement etmeli
§Örnek Kullanım
use deadpool_postgres::{Config, Runtime};
use parsql_deadpool_postgres::TransactionOps;
use tokio_postgres::NoTls;
// Entity tanımı
#[derive(SqlQuery, SqlParams)]
#[table("users")]
pub struct InsertUser {
pub name: String,
pub email: String,
}
#[tokio::main]
async fn main() -> Result<(), tokio_postgres::Error> {
let mut cfg = Config::new();
cfg.dbname = Some("test".to_string());
let pool = cfg.create_pool(Some(Runtime::Tokio1), NoTls).unwrap();
let client = pool.get().await?;
let tx = client.transaction().await?;
let user = InsertUser {
name: "John".to_string(),
email: "john@example.com".to_string(),
};
// Extension method kullanımı
let rows_affected = tx.insert(user).await?;
tx.commit().await?;
println!("{} kayıt eklendi", rows_affected);
Ok(())
}
Sourceasync fn update<T>(&self, entity: T) -> Result<u64, Error>
async fn update<T>(&self, entity: T) -> Result<u64, Error>
Update method, mevcut bir kaydı güncellemek için kullanılır
§Parameters
entity
- Güncellenecek varlık, SqlQuery, UpdateParams ve SqlParams trait’lerini implement etmeli
Sourceasync fn delete<T>(&self, entity: T) -> Result<u64, Error>
async fn delete<T>(&self, entity: T) -> Result<u64, Error>
Delete method, bir kaydı silmek için kullanılır
§Parameters
entity
- Silinecek varlık, SqlQuery ve SqlParams trait’lerini implement etmeli
Sourceasync fn get<T>(&self, params: &T) -> Result<T, Error>
async fn get<T>(&self, params: &T) -> Result<T, Error>
Get method, tek bir kayıt getirmek için kullanılır
§Parameters
params
- Sorgu parametreleri, SqlQuery, FromRow ve SqlParams trait’lerini implement etmeli
Sourceasync fn get_all<T>(&self, params: &T) -> Result<Vec<T>, Error>
async fn get_all<T>(&self, params: &T) -> Result<Vec<T>, Error>
Get All method, birden fazla kayıt getirmek için kullanılır
§Parameters
params
- Sorgu parametreleri, SqlQuery, FromRow ve SqlParams trait’lerini implement etmeli
Sourceasync fn select<T, R, F>(&self, entity: T, to_model: F) -> Result<R, Error>
async fn select<T, R, F>(&self, entity: T, to_model: F) -> Result<R, Error>
Select method, özel dönüşüm fonksiyonu ile tek bir kayıt getirmek için kullanılır
§Parameters
entity
- Sorgu parametreleri, SqlQuery ve SqlParams trait’lerini implement etmelito_model
- Satırı istenen türe dönüştüren fonksiyon
Sourceasync fn select_all<T, R, F>(
&self,
entity: T,
to_model: F,
) -> Result<Vec<R>, Error>
async fn select_all<T, R, F>( &self, entity: T, to_model: F, ) -> Result<Vec<R>, Error>
Select All method, özel dönüşüm fonksiyonu ile birden fazla kayıt getirmek için kullanılır
§Parameters
entity
- Sorgu parametreleri, SqlQuery ve SqlParams trait’lerini implement etmelito_model
- Her satırı istenen türe dönüştüren fonksiyon
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.