summaryrefslogtreecommitdiffstats
path: root/src/db/models/githash.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/db/models/githash.rs')
-rw-r--r--src/db/models/githash.rs18
1 files changed, 10 insertions, 8 deletions
diff --git a/src/db/models/githash.rs b/src/db/models/githash.rs
index dfb24b6..2dcb0bb 100644
--- a/src/db/models/githash.rs
+++ b/src/db/models/githash.rs
@@ -32,14 +32,16 @@ impl GitHash {
pub fn create_or_fetch(database_connection: &PgConnection, githash: &str) -> Result<GitHash> {
let new_hash = NewGitHash { hash: githash };
- diesel::insert_into(githashes::table)
- .values(&new_hash)
- .on_conflict_do_nothing()
- .execute(database_connection)?;
+ database_connection.transaction::<_, Error, _>(|| {
+ diesel::insert_into(githashes::table)
+ .values(&new_hash)
+ .on_conflict_do_nothing()
+ .execute(database_connection)?;
- dsl::githashes
- .filter(hash.eq(githash))
- .first::<GitHash>(database_connection)
- .map_err(Error::from)
+ dsl::githashes
+ .filter(hash.eq(githash))
+ .first::<GitHash>(database_connection)
+ .map_err(Error::from)
+ })
}
}