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 connectionentity
: 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(())
}