pub async fn update<T: SqlQuery + UpdateParams>(
pool: &Pool,
entity: T,
) -> Result<bool, Error>
Expand description
§update
Deadpool bağlantı havuzunu kullanarak veritabanındaki mevcut bir kaydı günceller.
§Parametreler
pool
: Deadpool bağlantı havuzuentity
: Güncelleme bilgilerini içeren veri nesnesi (SqlQuery ve UpdateParams trait’lerini uygulamalıdır)
§Dönüş Değeri
Result<bool, Error>
: Başarılı olursa, true 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(Updateable, UpdateParams)] // Gerekli makrolar
#[table("tablo_adi")] // Güncellenecek tablo adı
#[update("alan1, alan2")] // Güncellenecek alanlar (isteğe bağlı)
#[where_clause("id = $")] // Güncelleme koşulu
pub struct VeriModeli {
pub id: i32, // Koşulda kullanılan alanlar
pub alan1: String, // Güncellenecek alanlar
pub alan2: i32, // Güncellenecek alanlar
// ...
}
Updateable
: Otomatik olarak SQL UPDATE ifadeleri oluştururUpdateParams
: Otomatik olarak güncelleme parametreleri oluşturur#[table("tablo_adi")]
: Güncellenecek tablo adını belirtir#[update("alan1, alan2")]
: Hangi alanların güncelleneceğini belirtir (belirtilmezse, tüm alanlar güncellenir)#[where_clause("id = $")]
: Güncelleme koşulunu belirtir ($
parametre değeri ile değiştirilir)
§Kullanım Örneği
use deadpool_postgres::{Config, Runtime, Pool};
use tokio_postgres::{NoTls, Error};
use parsql::tokio_postgres::pool_crud_ops::update;
#[derive(Updateable, UpdateParams)]
#[table("users")]
#[update("name, email")]
#[where_clause("id = $")]
pub struct UpdateUser {
pub id: i32,
pub name: String,
pub email: String,
pub state: i16, // update özniteliğinde belirtilmediği için bu alan güncellenmez
}
#[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 update_user = UpdateUser {
id: 1,
name: String::from("John"),
email: String::from("john@example.com"),
state: 2,
};
let update_result = update(&pool, update_user).await?;
println!("Update result: {:?}", update_result);
Ok(())
}