diff options
author | Matthias Beyer <mail@beyermatthias.de> | 2021-03-04 12:59:00 +0100 |
---|---|---|
committer | Matthias Beyer <mail@beyermatthias.de> | 2021-03-04 12:59:00 +0100 |
commit | e83155b64527de035b55d57c12c96463f0443b84 (patch) | |
tree | eec2fc412c18fff64079c4776fee68cf4686deb2 | |
parent | 2aaae5bccd18633df218c3ffafb5dda64ec7f806 (diff) | |
parent | 2ef64316d1af14e36d7946ccdf64a2dd97202fc0 (diff) |
Merge branch 'fix-env-filter-jobs'
-rw-r--r-- | src/commands/db.rs | 56 | ||||
-rw-r--r-- | src/util/mod.rs | 1 |
2 files changed, 33 insertions, 24 deletions
diff --git a/src/commands/db.rs b/src/commands/db.rs index 0ef9893..349fa79 100644 --- a/src/commands/db.rs +++ b/src/commands/db.rs @@ -306,6 +306,11 @@ fn jobs(conn_cfg: DbConnectionConfig, matches: &ArgMatches) -> Result<()> { "Env", ]); let conn = crate::db::establish_connection(conn_cfg)?; + let env_filter_tpl = matches + .value_of("filter_env") + .map(crate::util::env::parse_to_env) + .transpose()?; + let jobs = matches .value_of("submit_uuid") .map(uuid::Uuid::parse_str) @@ -316,46 +321,49 @@ fn jobs(conn_cfg: DbConnectionConfig, matches: &ArgMatches) -> Result<()> { .inner_join(schema::endpoints::table) .inner_join(schema::packages::table) .left_outer_join(schema::job_envs::table.inner_join(schema::envvars::table)) - .filter(schema::submits::uuid.eq(&submit_uuid)); + .filter(schema::submits::uuid.eq(&submit_uuid)) + .into_boxed(); - if let Some((env_name, env_value)) = matches - .value_of("filter_env") - .map(crate::util::env::parse_to_env) - .transpose()? - { - sel.filter({ - use crate::diesel::BoolExpressionMethods; + let sel = if let Some((name, val)) = env_filter_tpl.as_ref() { + use crate::diesel::BoolExpressionMethods; - schema::envvars::dsl::name - .eq(env_name.as_ref()) - .and(schema::envvars::dsl::value.eq(env_value)) + sel.filter({ + schema::envvars::dsl::name.eq(name.as_ref()) + .and(schema::envvars::dsl::value.eq(val)) }) - .load::<( - models::Job, - models::Submit, - models::Endpoint, - models::Package, - Option<(models::JobEnv, models::EnvVar)>, - )>(&conn) - .map_err(Error::from) } else { - sel.load::<( + sel + }; + + sel.load::<( models::Job, models::Submit, models::Endpoint, models::Package, Option<(models::JobEnv, models::EnvVar)>, )>(&conn) - .map_err(Error::from) - } + .map_err(Error::from) }) .unwrap_or_else(|| { - dsl::jobs + let sel = dsl::jobs .inner_join(crate::schema::submits::table) .inner_join(crate::schema::endpoints::table) .inner_join(crate::schema::packages::table) .left_outer_join(schema::job_envs::table.inner_join(schema::envvars::table)) - .load::<( + .into_boxed(); + + let sel = if let Some((name, val)) = env_filter_tpl.as_ref() { + use crate::diesel::BoolExpressionMethods; + + sel.filter({ + schema::envvars::dsl::name.eq(name.as_ref()) + .and(schema::envvars::dsl::value.eq(val)) + }) + } else { + sel + }; + + sel.load::<( models::Job, models::Submit, models::Endpoint, diff --git a/src/util/mod.rs b/src/util/mod.rs index 8b78b2a..c8216b7 100644 --- a/src/util/mod.rs +++ b/src/util/mod.rs @@ -39,6 +39,7 @@ impl AsRef<str> for EnvironmentVariableName { } } + pub mod docker; pub mod env; pub mod filters; |