summaryrefslogtreecommitdiffstats
path: root/src/db/models/package.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/db/models/package.rs')
-rw-r--r--src/db/models/package.rs26
1 files changed, 14 insertions, 12 deletions
diff --git a/src/db/models/package.rs b/src/db/models/package.rs
index 88839b6..1ae81b5 100644
--- a/src/db/models/package.rs
+++ b/src/db/models/package.rs
@@ -42,20 +42,22 @@ impl Package {
version: p.version().deref(),
};
- diesel::insert_into(packages::table)
- .values(&new_package)
- .on_conflict_do_nothing()
- .execute(database_connection)?;
+ database_connection.transaction::<_, Error, _>(|| {
+ diesel::insert_into(packages::table)
+ .values(&new_package)
+ .on_conflict_do_nothing()
+ .execute(database_connection)?;
- dsl::packages
- .filter({
- let p_name = p.name().deref();
- let p_vers = p.version().deref();
+ dsl::packages
+ .filter({
+ let p_name = p.name().deref();
+ let p_vers = p.version().deref();
- name.eq(p_name).and(version.eq(p_vers))
- })
- .first::<Package>(database_connection)
- .map_err(Error::from)
+ name.eq(p_name).and(version.eq(p_vers))
+ })
+ .first::<Package>(database_connection)
+ .map_err(Error::from)
+ })
}
pub fn fetch_for_job(database_connection: &PgConnection, j: &crate::db::models::Job) -> Result<Option<Package>> {