Function fetch_all

Source
pub fn fetch_all<P, R>(conn: &Connection, params: &P) -> Result<Vec<R>, Error>
where P: SqlQuery<R> + SqlParams, R: FromRow,
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(())
}