Trait TransactionOps

Source
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§

Source

async fn insert<T>(&self, entity: T) -> Result<u64, Error>
where T: SqlQuery + SqlParams + Debug,

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(())
}
Source

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
Source

async fn delete<T>(&self, entity: T) -> Result<u64, Error>
where T: SqlQuery + SqlParams + Debug,

Delete method, bir kaydı silmek için kullanılır

§Parameters
  • entity - Silinecek varlık, SqlQuery ve SqlParams trait’lerini implement etmeli
Source

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
Source

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
Source

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>,

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 etmeli
  • to_model - Satırı istenen türe dönüştüren fonksiyon
Source

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,

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 etmeli
  • to_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.

Implementors§