diff options
author | Matthias Beyer <matthias.beyer@atos.net> | 2021-08-17 12:10:58 +0200 |
---|---|---|
committer | Matthias Beyer <matthias.beyer@atos.net> | 2021-08-17 12:11:01 +0200 |
commit | 9138cbd334115c2e649355bfef497b08c055948b (patch) | |
tree | a16370997d52a0a4157029f937ea3997629a3ade /src/commands | |
parent | 2d4945938be440411e43c3440a368df0f70e5810 (diff) |
Add option to get submits for a specific commit
Signed-off-by: Matthias Beyer <matthias.beyer@atos.net>
Tested-by: Matthias Beyer <matthias.beyer@atos.net>
Diffstat (limited to 'src/commands')
-rw-r--r-- | src/commands/db.rs | 24 |
1 files changed, 17 insertions, 7 deletions
diff --git a/src/commands/db.rs b/src/commands/db.rs index 672a0d6..1096ae7 100644 --- a/src/commands/db.rs +++ b/src/commands/db.rs @@ -338,17 +338,25 @@ fn submits(conn_cfg: DbConnectionConfig<'_>, matches: &ArgMatches, progressbars: let limit = matches.value_of("limit").map(i64::from_str).transpose()?; let hdrs = crate::commands::util::mk_header(vec!["Time", "UUID"]); let conn = conn_cfg.establish_connection(&progressbars)?; + let commit = matches.value_of("for-commit"); let query = schema::submits::table - .order_by(schema::submits::id.desc()); // required for the --limit implementation + .order_by(schema::submits::id.desc()) // required for the --limit implementation + .inner_join(schema::githashes::table.on(schema::submits::repo_hash_id.eq(schema::githashes::id))) + .into_boxed(); + + let query = if let Some(commithash) = commit.as_ref() { + query.filter(schema::githashes::hash.eq(commithash)) + } else { + query + }; let submits = if let Some(pkgname) = matches.value_of("with_pkg").map(String::from) { // Get all submits which included the package, but were not necessarily made _for_ the package let query = query .inner_join(schema::jobs::table) .inner_join(schema::packages::table.on(schema::jobs::package_id.eq(schema::packages::id))) - .filter(schema::packages::name.eq(&pkgname)) - .into_boxed(); + .filter(schema::packages::name.eq(&pkgname)); if let Some(limit) = limit { query.limit(limit) @@ -363,8 +371,7 @@ fn submits(conn_cfg: DbConnectionConfig<'_>, matches: &ArgMatches, progressbars: .inner_join({ schema::packages::table.on(schema::submits::requested_package_id.eq(schema::packages::id)) }) - .filter(schema::packages::dsl::name.eq(&pkgname)) - .into_boxed(); + .filter(schema::packages::dsl::name.eq(&pkgname)); if let Some(limit) = limit { query.limit(limit) @@ -374,9 +381,12 @@ fn submits(conn_cfg: DbConnectionConfig<'_>, matches: &ArgMatches, progressbars: .select(schema::submits::all_columns) .load::<models::Submit>(&conn)? } else if let Some(limit) = limit { - query.limit(limit).load::<models::Submit>(&conn)? + query.select(schema::submits::all_columns) + .limit(limit) + .load::<models::Submit>(&conn)? } else { - query.load::<models::Submit>(&conn)? + query.select(schema::submits::all_columns) + .load::<models::Submit>(&conn)? }; // Helper to map Submit -> Vec<String> |