pub async fn insert<T, P>(pool: &Pool, entity: T) -> Result<P, Error>
Expand description
§insert
Deadpool bağlantı havuzunu kullanarak veritabanına yeni bir kayıt ekler.
§Parametreler
pool
: Deadpool bağlantı havuzuentity
: Eklenecek veri nesnesi (SqlQuery ve SqlParams trait’lerini uygulamalıdır)
§Dönüş Değeri
Result<i64, Error>
: Başarılı olursa, eklenen kayıt ID’sini 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ştururSqlParams
: 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(())
}