58 lines
1.4 KiB
Rust
58 lines
1.4 KiB
Rust
|
|
use rusqlite::{Connection, Result};
|
||
|
|
#[cfg(all(target_family = "wasm", target_os = "unknown"))]
|
||
|
|
use wasm_bindgen::prelude::wasm_bindgen;
|
||
|
|
|
||
|
|
#[cfg(all(target_family = "wasm", target_os = "unknown"))]
|
||
|
|
#[wasm_bindgen]
|
||
|
|
extern "C" {
|
||
|
|
#[wasm_bindgen(js_namespace = console)]
|
||
|
|
fn log(s: &str);
|
||
|
|
}
|
||
|
|
|
||
|
|
#[cfg(all(target_family = "wasm", target_os = "unknown"))]
|
||
|
|
macro_rules! println {
|
||
|
|
($($t:tt)*) => (log(&format_args!($($t)*).to_string()))
|
||
|
|
}
|
||
|
|
|
||
|
|
struct Person {
|
||
|
|
id: i32,
|
||
|
|
name: String,
|
||
|
|
}
|
||
|
|
|
||
|
|
#[cfg_attr(all(target_family = "wasm", target_os = "unknown"), wasm_bindgen(main))]
|
||
|
|
fn main() -> Result<()> {
|
||
|
|
let conn = Connection::open_in_memory()?;
|
||
|
|
|
||
|
|
conn.execute(
|
||
|
|
"CREATE TABLE IF NOT EXISTS persons (
|
||
|
|
id INTEGER PRIMARY KEY,
|
||
|
|
name TEXT NOT NULL
|
||
|
|
)",
|
||
|
|
(), // empty list of parameters.
|
||
|
|
)?;
|
||
|
|
|
||
|
|
conn.execute(
|
||
|
|
"INSERT INTO persons (name) VALUES (?1), (?2), (?3)",
|
||
|
|
["Steven", "John", "Alex"].map(|n| n.to_string()),
|
||
|
|
)?;
|
||
|
|
|
||
|
|
let mut stmt = conn.prepare("SELECT id, name FROM persons")?;
|
||
|
|
let rows = stmt.query_map([], |row| {
|
||
|
|
Ok(Person {
|
||
|
|
id: row.get(0)?,
|
||
|
|
name: row.get(1)?,
|
||
|
|
})
|
||
|
|
})?;
|
||
|
|
|
||
|
|
println!("Found persons:");
|
||
|
|
|
||
|
|
for person in rows {
|
||
|
|
match person {
|
||
|
|
Ok(p) => println!("ID: {}, Name: {}", p.id, p.name),
|
||
|
|
Err(e) => eprintln!("Error: {e:?}"),
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
Ok(())
|
||
|
|
}
|