ignore UniqueViolation errors in inserts

feat/vaults
Tomáš Mládek 2021-03-06 18:23:31 +01:00
parent 8751e57433
commit 05d0fa7a87
1 changed files with 10 additions and 2 deletions

View File

@ -8,6 +8,7 @@ use diesel::debug_query;
use diesel::expression::operators::{And, Or};
use diesel::prelude::*;
use diesel::r2d2::{self, ConnectionManager};
use diesel::result::{DatabaseErrorKind, Error};
use diesel::sql_types::Bool;
use diesel::sqlite::{Sqlite, SqliteConnection};
use lexpr::value::Value::Symbol;
@ -590,9 +591,16 @@ pub fn insert_entry<C: Connection<Backend = Sqlite>>(
let entry = Entry::try_from(&insert_entry)?;
diesel::insert_into(data::table)
let result = diesel::insert_into(data::table)
.values(insert_entry)
.execute(connection)?;
.execute(connection);
if let Some(error) = result.err() {
match error {
Error::DatabaseError(DatabaseErrorKind::UniqueViolation, _) => {}
_ => return Err(anyhow!(error)),
}
}
Ok(Address::Hash(entry.hash()?))
}