- let token =
- match tx.query_row("SELECT [id], [validation_token] FROM [User] WHERE [email] = ?1", [email], |r| {
- Ok((r.get::<&str, i64>("id")?, r.get::<&str, Option<String>>("validation_token")?))
- }).optional()? {
- Some((id, validation_token)) => {
- if validation_token.is_none() {
- return Ok(SignUpResult::UserAlreadyExists)
- }
- let token = generate_token();
- let hashed_password = hash(password).map_err(|e| DBError::from_dyn_error(e))?;
- tx.execute("UPDATE [User] SET [validation_token] = ?2, [creation_datetime] = ?3, [password] = ?4 WHERE [id] = ?1", params![id, token, datetime, hashed_password])?;
- token
- },
- None => {
- let token = generate_token();
- let hashed_password = hash(password).map_err(|e| DBError::from_dyn_error(e))?;
- tx.execute("INSERT INTO [User] ([email], [validation_token], [creation_datetime], [password]) VALUES (?1, ?2, ?3, ?4)", params![email, token, datetime, hashed_password])?;
- token
+ let token = match tx
+ .query_row(
+ "SELECT [id], [validation_token] FROM [User] WHERE [email] = ?1",
+ [email],
+ |r| {
+ Ok((
+ r.get::<&str, i64>("id")?,
+ r.get::<&str, Option<String>>("validation_token")?,
+ ))