Function insert

Source
pub async fn insert<T: SqlQuery + SqlParams>(
    pool: &Pool,
    entity: T,
) -> Result<u64, Error>
Expand description

§insert

Deadpool bağlantı havuzunu kullanarak veritabanına yeni bir kayıt ekler.

§Parametreler

  • pool: Deadpool bağlantı havuzu
  • entity: Eklenecek veri nesnesi (SqlQuery ve SqlParams trait’lerini uygulamalıdır)

§Dönüş Değeri

  • Result<u64, Error>: Başarılı olursa, eklenen kayıt sayısını döndürür; başarısız olursa, Error döndürür

§Yapı Tanımı

Bu fonksiyonla kullanılan yapılar aşağıdaki derive makrolarıyla işaretlenmelidir:

#[derive(Insertable, SqlParams)]  // Gerekli makrolar
#[table("tablo_adi")]            // Ekleme yapılacak tablo adı
pub struct VeriModeli {
    pub alan1: String,
    pub alan2: i32,
    // ...
}
  • Insertable: Otomatik olarak SQL INSERT ifadeleri oluşturur
  • SqlParams: Otomatik olarak SQL parametreleri oluşturur
  • #[table("tablo_adi")]: Ekleme yapılacak tablo adını belirtir

§Kullanım Örneği

use deadpool_postgres::{Config, Runtime, Pool};
use tokio_postgres::{NoTls, Error};
use parsql::tokio_postgres::pool_crud_ops::insert;
 
#[derive(Insertable, SqlParams)]
#[table("users")]
pub struct InsertUser {
    pub name: String,
    pub email: String,
    pub state: i16,
}

#[tokio::main]
async fn main() -> Result<(), Error> {
    let mut cfg = Config::new();
    cfg.host = Some("localhost".to_string());
    cfg.dbname = Some("test".to_string());
     
    let pool = cfg.create_pool(Some(Runtime::Tokio1), NoTls).unwrap();

    let insert_user = InsertUser {
        name: "John".to_string(),
        email: "john@example.com".to_string(),
        state: 1_i16,
    };

    let insert_result = insert(&pool, insert_user).await?;
    println!("Insert result: {:?}", insert_result);
    Ok(())
}