summaryrefslogtreecommitdiffstats
path: root/src/db/models/release_store.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/db/models/release_store.rs')
-rw-r--r--src/db/models/release_store.rs26
1 files changed, 13 insertions, 13 deletions
diff --git a/src/db/models/release_store.rs b/src/db/models/release_store.rs
index bc3b097..ad6c9b2 100644
--- a/src/db/models/release_store.rs
+++ b/src/db/models/release_store.rs
@@ -10,6 +10,7 @@
use anyhow::Error;
use anyhow::Result;
+use diesel::Connection;
use diesel::ExpressionMethods;
use diesel::PgConnection;
use diesel::QueryDsl;
@@ -32,23 +33,22 @@ struct NewReleaseStore<'a> {
}
impl ReleaseStore {
- pub fn create(
- database_connection: &PgConnection,
- name: &str,
- ) -> Result<ReleaseStore> {
+ pub fn create(database_connection: &PgConnection, name: &str) -> Result<ReleaseStore> {
let new_relstore = NewReleaseStore {
store_name: name,
};
- diesel::insert_into(schema::release_stores::table)
- .values(&new_relstore)
- .on_conflict_do_nothing()
- .execute(database_connection)?;
-
- schema::release_stores::table
- .filter(schema::release_stores::store_name.eq(name))
- .first::<ReleaseStore>(database_connection)
- .map_err(Error::from)
+ database_connection.transaction::<_, Error, _>(|| {
+ diesel::insert_into(schema::release_stores::table)
+ .values(&new_relstore)
+ .on_conflict_do_nothing()
+ .execute(database_connection)?;
+
+ schema::release_stores::table
+ .filter(schema::release_stores::store_name.eq(name))
+ .first::<ReleaseStore>(database_connection)
+ .map_err(Error::from)
+ })
}
}