summaryrefslogtreecommitdiffstats
path: root/src/db
diff options
context:
space:
mode:
authorMatthias Beyer <matthias.beyer@atos.net>2021-02-09 13:56:13 +0100
committerMatthias Beyer <mail@beyermatthias.de>2021-02-11 18:40:48 +0100
commite75119228d65c8ca37c0ea0b9a51d3b97d1cb3eb (patch)
treef84a7e56ebe14881db7b187fcd3003bf5422fc2e /src/db
parent5392cd0a1d2e22d970b27d2f4345db062ca21687 (diff)
Add Artifact::get_release() to get a Release object for the artifact, if it exists
Signed-off-by: Matthias Beyer <matthias.beyer@atos.net>
Diffstat (limited to 'src/db')
-rw-r--r--src/db/models/artifact.rs13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/db/models/artifact.rs b/src/db/models/artifact.rs
index 1050b30..11e2cec 100644
--- a/src/db/models/artifact.rs
+++ b/src/db/models/artifact.rs
@@ -20,6 +20,7 @@ use diesel::prelude::*;
use diesel::PgConnection;
use crate::db::models::Job;
+use crate::db::models::Release;
use crate::schema::artifacts;
use crate::schema::artifacts::*;
@@ -51,6 +52,18 @@ impl Artifact {
crate::db::models::Release::create(database_connection, &self, release_date)
}
+ pub fn get_release(&self, database_connection: &PgConnection) -> Result<Option<Release>> {
+ use crate::schema;
+
+ schema::artifacts::table
+ .inner_join(schema::releases::table)
+ .filter(schema::releases::artifact_id.eq(self.id))
+ .select(schema::releases::all_columns)
+ .first::<Release>(database_connection)
+ .optional()
+ .map_err(Error::from)
+ }
+
pub fn create(
database_connection: &PgConnection,
art_path: &ArtifactPath,