ignore UniqueViolation errors in inserts
This commit is contained in:
parent
8751e57433
commit
05d0fa7a87
1 changed files with 10 additions and 2 deletions
|
@ -8,6 +8,7 @@ use diesel::debug_query;
|
||||||
use diesel::expression::operators::{And, Or};
|
use diesel::expression::operators::{And, Or};
|
||||||
use diesel::prelude::*;
|
use diesel::prelude::*;
|
||||||
use diesel::r2d2::{self, ConnectionManager};
|
use diesel::r2d2::{self, ConnectionManager};
|
||||||
|
use diesel::result::{DatabaseErrorKind, Error};
|
||||||
use diesel::sql_types::Bool;
|
use diesel::sql_types::Bool;
|
||||||
use diesel::sqlite::{Sqlite, SqliteConnection};
|
use diesel::sqlite::{Sqlite, SqliteConnection};
|
||||||
use lexpr::value::Value::Symbol;
|
use lexpr::value::Value::Symbol;
|
||||||
|
@ -590,9 +591,16 @@ pub fn insert_entry<C: Connection<Backend = Sqlite>>(
|
||||||
|
|
||||||
let entry = Entry::try_from(&insert_entry)?;
|
let entry = Entry::try_from(&insert_entry)?;
|
||||||
|
|
||||||
diesel::insert_into(data::table)
|
let result = diesel::insert_into(data::table)
|
||||||
.values(insert_entry)
|
.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()?))
|
Ok(Address::Hash(entry.hash()?))
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue