Function get_all

Source
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ı havuzu
  • params: 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şturur
  • SqlParams: Otomatik olarak SQL parametreleri oluşturur
  • FromRow: 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(())
}