Add function for adding name to database
[?]
Jan 10, 2022, 2:41 AM
KUANIPWFDXDFKJ2LH4FQ6APYOPLNYJ5LVGLSBSC75WUUZPFHILCACDependencies
- [2]
RNW6D777Minor tidy - [3]
HMOBTVJ4Initialize crate and add expected dependencies - [4]
AV73DYWQInitial functions for using sqlite in async environment
Change contents
- edit in src/names_database.rs at line 1
use std::borrow::Borrow; - replacement in src/names_database.rs at line 5
conn.execute("CREATE TABLE IF NOT EXISTS names (name TEXT)")?;conn.execute("CREATE TABLE IF NOT EXISTS names (name TEXT,UNIQUE name ON CONFLICT FAIL)",)?; - edit in src/names_database.rs at line 41
}pub async fn add_name(&self,name: String,) -> Result<i64, Box<dyn std::error::Error>> {match self.post(move |conn| {let mut stmnt =conn.prepare("INSERT INTO names(name) VALUES(?)")?;stmnt.bind::<&str>(1, name.borrow())?;stmnt.next().ok();let mut stmnt = conn.prepare("SELECT rowid FROM names WHERE names.name = ?")?;stmnt.bind::<&str>(1, name.borrow())?;match stmnt.next()? {sqlite::State::Row => Ok(stmnt.read::<i64>(0)?),_ => Err(sqlite::Error {code: None,message: Some(String::from("Expected rowid from row just inserted",)),}),}}).await{Err(e) => Err(e),Ok(Err(e)) => Err(Box::new(e) as Box<dyn std::error::Error>),Ok(Ok(r)) => Ok(r),} - replacement in src/main.rs at line 7
let _db = names_database::AsyncConnection::open(env::args().nth(1).ok_or(ArgsError::NoArgs)?).await?;let _db = names_database::AsyncConnection::open(env::args().nth(1).ok_or(ArgsError::NoArgs)?,).await?; - edit in src/main.rs at line 17
}impl std::fmt::Display for ArgsError {fn fmt(&self,f: &mut std::fmt::Formatter<'_>,) -> Result<(), std::fmt::Error> {match self {ArgsError::NoArgs => write!(f, "Expected program arguments"),}}