Function fetch_all

Source
pub fn fetch_all<T: SqlQuery + FromRow + SqlParams>(
    conn: &Connection,
    entity: &T,
) -> Result<Vec<T>, Error>
Expand description

§fetch_all

Retrieves multiple records from the database based on a specific condition.

§Parameters

  • conn: SQLite database connection
  • entity: Query parameter object (must implement SqlQuery, FromRow, and SqlParams traits)

§Return Value

  • Result<Vec<T>, Error>: On success, returns a vector of records; on failure, returns Error

§Example Usage

use rusqlite::{Connection, Result};
use parsql_macros::{Queryable, FromRow, SqlParams};
use parsql_sqlite::fetch_all;
 
fn main() -> Result<()> {
    // Create database connection
    let conn = Connection::open("test.db")?;
    conn.execute("CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT, email TEXT, active INTEGER)", [])?;
    conn.execute("INSERT INTO users (id, name, email, active) VALUES (1, 'John', 'john@example.com', 1)", [])?;
    conn.execute("INSERT INTO users (id, name, email, active) VALUES (2, 'Jane', 'jane@example.com', 1)", [])?;
 
    // Define a query
    #[derive(Queryable, FromRow, SqlParams)]
    #[table("users")]
    #[where_clause("active = ?")]
    pub struct GetActiveUsers {
        pub id: i64,
        pub name: String,
        pub email: String,
        pub active: i32,
    }
 
    // Create query parameters (get all active users)
    let query = GetActiveUsers {
        id: 0,
        name: String::new(),
        email: String::new(),
        active: 1,
    };
 
    // Execute query
    let users = fetch_all(&conn, &query)?;
    println!("Active users: {:?}", users);
    Ok(())
}