don't bail the tx when looking for a mail account

This commit is contained in:
ntr 2019-08-26 19:30:38 +10:00
parent 3bca63ed7e
commit e57f72940d
2 changed files with 9 additions and 7 deletions

View File

@ -130,7 +130,7 @@ pub fn select(db: &Db, email: &String) -> Result<Email, Error> {
return Ok(Email { id, email, account, confirmed }); return Ok(Email { id, email, account, confirmed });
} }
pub fn select_account(db: &Db, account: Uuid) -> Result<Email, Error> { pub fn select_account(db: &Db, account: Uuid) -> Result<Option<Email>, Error> {
let query = " let query = "
SELECT id, email, account, confirmed SELECT id, email, account, confirmed
FROM emails FROM emails
@ -140,15 +140,17 @@ pub fn select_account(db: &Db, account: Uuid) -> Result<Email, Error> {
let result = db let result = db
.query(query, &[&account])?; .query(query, &[&account])?;
let row = result.iter().next() let row = match result.iter().next() {
.ok_or(err_msg("email found"))?; Some(r) => r,
None => return Ok(None),
};
let id: Uuid = row.get(0); let id: Uuid = row.get(0);
let email: String = row.get(1); let email: String = row.get(1);
let account: Uuid = row.get(2); let account: Uuid = row.get(2);
let confirmed: bool = row.get(3); let confirmed: bool = row.get(3);
return Ok(Email { id, email, account, confirmed }); return Ok(Some(Email { id, email, account, confirmed }));
} }
pub fn set_recovery(tx: &mut Transaction, email: &String) -> Result<String, Error> { pub fn set_recovery(tx: &mut Transaction, email: &String) -> Result<String, Error> {

View File

@ -229,12 +229,12 @@ impl Handler for Connection {
let mut tx = db.transaction().unwrap(); let mut tx = db.transaction().unwrap();
// email state // email state
match mail::select_account(&db, a.id) { match mail::select_account(&db, a.id).unwrap() {
Ok(e) => { Some(e) => {
self.ws.send(RpcMessage::EmailState(e.clone())).unwrap(); self.ws.send(RpcMessage::EmailState(e.clone())).unwrap();
self.events.send(Event::Subscribe(self.id, e.id)).unwrap(); self.events.send(Event::Subscribe(self.id, e.id)).unwrap();
}, },
Err(_) => (), None => (),
}; };
// send account constructs // send account constructs