Created
September 15, 2018 10:35
-
-
Save tombasche/b656fe729a1d4fd10bee831441d7cad0 to your computer and use it in GitHub Desktop.
Oxidised random tea
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
extern crate sqlite; | |
use std::fs::File; | |
use std::io::{BufRead, BufReader}; | |
fn db_connection(db_name: &String) -> sqlite::Connection { | |
let connection = sqlite::open(db_name).unwrap(); | |
connection.execute("CREATE TABLE teas (name text, variety text, last_used date)").unwrap(); | |
connection | |
} | |
fn main() { | |
let db_name: &String = &"tea.db".to_string(); | |
let connection = db_connection(&db_name); | |
let f = File::open("tea.txt").expect("Unable to open file"); | |
let f = BufReader::new(f); | |
for line in f.lines() { | |
let line = line.expect("Unable to read line"); | |
let mut splittable_line = line.split(","); | |
let vec = splittable_line.collect::<Vec<&str>>(); | |
let statement = format!("INSERT INTO teas (name, variety) VALUES(\"{}\",\"{}\")", vec[0], vec[1].trim()); | |
connection.execute(statement).unwrap(); | |
} | |
select_tea(&db_name); | |
} | |
fn select_tea(db_name: &String) { | |
let connection = sqlite::open(db_name).unwrap(); | |
let statement = "SELECT name, variety, last_used FROM teas WHERE (last_used != date('now') or last_used != date('now') -1 or last_used IS NULL) ORDER BY RANDOM() LIMIT 1"; | |
let mut cursor = connection | |
.prepare(statement) | |
.unwrap() | |
.cursor(); | |
let mut tea = String::new(); | |
while let Some(row) = cursor.next().unwrap() { | |
println!("{}", format!("{}: {}", row[0].as_string().unwrap(), row[1].as_string().unwrap())); | |
tea = row[0].as_string().unwrap().to_string(); | |
} | |
let update_statement = format!("UPDATE teas SET last_used = date('now') WHERE name = \"{}\"", tea); | |
connection.execute(update_statement).unwrap(); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment