pub async fn get<T: SqlQuery + FromRow + SqlParams>(
pool: &Pool,
params: &T,
) -> Result<T, Error>
Expand description
§get
Deadpool bağlantı havuzunu kullanarak veritabanından bir kaydı alır.
§Parametreler
pool
: Deadpool bağlantı havuzuparams
: Sorgu parametrelerini içeren veri nesnesi (SqlQuery, FromRow ve SqlParams trait’lerini uygulamalıdır)
§Dönüş Değeri
Result<T, Error>
: Başarılı olursa, alınan kaydı 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(Queryable, SqlParams, FromRow)] // Gerekli makrolar
#[table("tablo_adi")] // Sorgulanacak tablo adı
#[where_clause("id = $")] // Sorgu koşulu
pub struct VeriModeli {
pub id: i32, // Koşulda kullanılan alanlar
pub alan1: String, // Getirilen veri alanları
pub alan2: i32, // Getirilen veri alanları
// ...
}
Queryable
: Otomatik olarak SQL SELECT ifadeleri oluştururSqlParams
: Otomatik olarak SQL parametreleri oluştururFromRow
: Veritabanı satırını yapıya dönüştürür#[table("tablo_adi")]
: Sorgulanacak tablo adını belirtir#[where_clause("id = $")]
: Sorgu 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::get;
#[derive(Queryable, SqlParams, FromRow)]
#[table("users")]
#[where_clause("id = $")]
pub struct GetUser {
pub id: i32,
pub name: String,
pub email: String,
pub state: i16,
}
impl GetUser {
pub fn new(id: i32) -> Self {
Self {
id,
name: String::new(),
email: String::new(),
state: 0,
}
}
}
#[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 user_params = GetUser::new(1);
let user = get(&pool, &user_params).await?;
println!("User: {:?}", user);
Ok(())
}