diff --git a/.gitignore b/.gitignore index a9d37c5..4dce8c8 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ -target +*.sqlite3 Cargo.lock +target diff --git a/README.md b/README.md index d889265..77e7272 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,45 @@ The package provides an interface to [SQLite][1]. ## [Documentation][doc] +## Example + +The example given below can be ran using the following command: + +``` +cargo run --example workflow +``` + +```rust +extern crate sqlite; + +use std::path::PathBuf; + +fn main() { + let path = setup(); + let mut database = sqlite::open(&path).unwrap(); + + database.execute(r#" + CREATE TABLE `users` (id INTEGER, name VARCHAR(255)); + INSERT INTO `users` (id, name) VALUES (1, 'Alice'); + "#, None).unwrap(); + + database.execute("SELECT * FROM `users`;", Some(&mut |pairs| -> bool { + for (ref column, ref value) in pairs { + println!("{} = {}", column, value); + } + true + })).unwrap(); +} + +fn setup() -> PathBuf { + let path = PathBuf::from("database.sqlite3"); + if std::fs::metadata(&path).is_ok() { + std::fs::remove_file(&path).unwrap(); + } + path +} +``` + ## Contributing 1. Fork the project. diff --git a/examples/workflow.rs b/examples/workflow.rs new file mode 100644 index 0000000..5e807d4 --- /dev/null +++ b/examples/workflow.rs @@ -0,0 +1,28 @@ +extern crate sqlite; + +use std::path::PathBuf; + +fn main() { + let path = setup(); + let mut database = sqlite::open(&path).unwrap(); + + database.execute(r#" + CREATE TABLE `users` (id INTEGER, name VARCHAR(255)); + INSERT INTO `users` (id, name) VALUES (1, 'Alice'); + "#, None).unwrap(); + + database.execute("SELECT * FROM `users`;", Some(&mut |pairs| -> bool { + for (ref column, ref value) in pairs { + println!("{} = {}", column, value); + } + true + })).unwrap(); +} + +fn setup() -> PathBuf { + let path = PathBuf::from("database.sqlite3"); + if std::fs::metadata(&path).is_ok() { + std::fs::remove_file(&path).unwrap(); + } + path +}