librius 0.5.1

A personal library manager CLI written in Rust.
Documentation
use crate::models::Book;
use rusqlite::{Connection, Result};

pub fn search_books(conn: &Connection, query: &str) -> Result<Vec<Book>> {
    let like = format!("%{}%", query);

    let mut stmt = conn.prepare(
        r#"
        SELECT id, title, author, editor, year, isbn, language, pages,
               genre, summary, room, shelf, row, position, added_at
        FROM books
        WHERE title   LIKE ?1
           OR author  LIKE ?1
           OR editor  LIKE ?1
           OR genre   LIKE ?1
           OR language LIKE ?1
        ORDER BY title COLLATE NOCASE ASC;
    "#,
    )?;

    let rows = stmt.query_map([like], Book::from_row)?;

    let mut out = Vec::new();
    for r in rows {
        out.push(r?);
    }
    Ok(out)
}