pub async fn get_all<T: SqlQuery + FromRow + SqlParams>(
pool: &Pool,
params: &T,
) -> Result<Vec<T>, Error>
Expand description
§get_all
Deadpool bağlantı havuzunu kullanarak veritabanından birden fazla 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<Vec<T>, Error>
: Başarılı olursa, alınan kayıtları içeren bir vektör 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("state = $")] // Sorgu koşulu
pub struct VeriModeli {
pub id: i32, // Alınacak alanlar
pub alan1: String, // Alınacak alanlar
pub alan2: i32, // Alınacak alanlar
pub state: i16, // Koşulda kullanılan 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("state = $")]
: 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_all;
#[derive(Queryable, SqlParams, FromRow)]
#[table("users")]
#[where_clause("state = $")]
pub struct ListUsers {
pub id: i32,
pub name: String,
pub email: String,
pub state: i16,
}
impl ListUsers {
pub fn new(state: i16) -> Self {
Self {
id: 0,
name: String::new(),
email: String::new(),
state,
}
}
}
#[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 = ListUsers::new(1);
let users = get_all(&pool, &user_params).await?;
println!("Users: {:?}", users);
Ok(())
}