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

View File

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