diff options
author | Matthias Beyer <matthias.beyer@atos.net> | 2021-02-11 14:31:05 +0100 |
---|---|---|
committer | Matthias Beyer <mail@beyermatthias.de> | 2021-02-11 18:57:25 +0100 |
commit | c863dc06fee0609ac9c92d1d46c5ff7bf5cc9377 (patch) | |
tree | 150df72f4c43e892f28fa81fb0892ea1eb686bde | |
parent | 2b246457e8f13b42a31b8ee3f5632dab09c21a85 (diff) |
Add output limit, default 50
Signed-off-by: Matthias Beyer <matthias.beyer@atos.net>
-rw-r--r-- | src/cli.rs | 40 | ||||
-rw-r--r-- | src/commands/db.rs | 16 |
2 files changed, 55 insertions, 1 deletions
@@ -106,6 +106,14 @@ pub fn cli<'a>() -> App<'a> { .subcommand(App::new("artifacts") .about("List artifacts from the DB") + .arg(Arg::new("limit") + .required(false) + .multiple(false) + .long("limit") + .takes_value(true) + .default_value("50") + .about("Limit number of output entries") + ) .arg(Arg::new("csv") .required(false) .multiple(false) @@ -126,6 +134,14 @@ pub fn cli<'a>() -> App<'a> { .subcommand(App::new("envvars") .about("List envvars from the DB") + .arg(Arg::new("limit") + .required(false) + .multiple(false) + .long("limit") + .takes_value(true) + .default_value("50") + .about("Limit number of output entries") + ) .arg(Arg::new("csv") .required(false) .multiple(false) @@ -137,6 +153,14 @@ pub fn cli<'a>() -> App<'a> { .subcommand(App::new("images") .about("List images from the DB") + .arg(Arg::new("limit") + .required(false) + .multiple(false) + .long("limit") + .takes_value(true) + .default_value("50") + .about("Limit number of output entries") + ) .arg(Arg::new("csv") .required(false) .multiple(false) @@ -148,6 +172,14 @@ pub fn cli<'a>() -> App<'a> { .subcommand(App::new("submits") .about("List submits from the DB") + .arg(Arg::new("limit") + .required(false) + .multiple(false) + .long("limit") + .takes_value(true) + .default_value("50") + .about("Limit number of output entries") + ) .arg(Arg::new("csv") .required(false) .multiple(false) @@ -177,6 +209,14 @@ pub fn cli<'a>() -> App<'a> { .subcommand(App::new("jobs") .about("List jobs from the DB") + .arg(Arg::new("limit") + .required(false) + .multiple(false) + .long("limit") + .takes_value(true) + .default_value("50") + .about("Limit number of output entries") + ) .arg(Arg::new("csv") .required(false) .multiple(false) diff --git a/src/commands/db.rs b/src/commands/db.rs index 8a37ec3..6c13c39 100644 --- a/src/commands/db.rs +++ b/src/commands/db.rs @@ -12,6 +12,7 @@ use std::fmt::Display; use std::io::Write; use std::path::PathBuf; use std::process::Command; +use std::str::FromStr; use anyhow::anyhow; use anyhow::Context; @@ -138,6 +139,7 @@ fn cli(db_connection_config: DbConnectionConfig, matches: &ArgMatches) -> Result fn artifacts(conn_cfg: DbConnectionConfig, matches: &ArgMatches) -> Result<()> { use crate::schema::artifacts::dsl; + let limit = matches.value_of("limit").map(i64::from_str).transpose()?.unwrap_or(50); let csv = matches.is_present("csv"); let hdrs = mk_header(vec!["id", "path", "released", "job id"]); let conn = crate::db::establish_connection(conn_cfg)?; @@ -150,6 +152,7 @@ fn artifacts(conn_cfg: DbConnectionConfig, matches: &ArgMatches) -> Result<()> { .inner_join(schema::jobs::table) .left_join(schema::releases::table) .filter(schema::jobs::dsl::uuid.eq(job_uuid)) + .limit(limit) .load::<(models::Artifact, models::Job, Option<models::Release>)>(&conn) .map_err(Error::from) }) @@ -157,6 +160,7 @@ fn artifacts(conn_cfg: DbConnectionConfig, matches: &ArgMatches) -> Result<()> { dsl::artifacts .inner_join(schema::jobs::table) .left_join(schema::releases::table) + .limit(limit) .order_by(schema::artifacts::id.asc()) .load::<(models::Artifact, models::Job, Option<models::Release>)>(&conn) .map_err(Error::from) @@ -187,10 +191,12 @@ fn artifacts(conn_cfg: DbConnectionConfig, matches: &ArgMatches) -> Result<()> { fn envvars(conn_cfg: DbConnectionConfig, matches: &ArgMatches) -> Result<()> { use crate::schema::envvars::dsl; + let limit = matches.value_of("limit").map(i64::from_str).transpose()?.unwrap_or(50); let csv = matches.is_present("csv"); let hdrs = mk_header(vec!["id", "name", "value"]); let conn = crate::db::establish_connection(conn_cfg)?; let data = dsl::envvars + .limit(limit) .load::<models::EnvVar>(&conn)? .into_iter() .map(|evar| vec![format!("{}", evar.id), evar.name, evar.value]) @@ -208,10 +214,12 @@ fn envvars(conn_cfg: DbConnectionConfig, matches: &ArgMatches) -> Result<()> { fn images(conn_cfg: DbConnectionConfig, matches: &ArgMatches) -> Result<()> { use crate::schema::images::dsl; + let limit = matches.value_of("limit").map(i64::from_str).transpose()?.unwrap_or(50); let csv = matches.is_present("csv"); let hdrs = mk_header(vec!["id", "name"]); let conn = crate::db::establish_connection(conn_cfg)?; let data = dsl::images + .limit(limit) .load::<models::Image>(&conn)? .into_iter() .map(|image| vec![format!("{}", image.id), image.name]) @@ -227,6 +235,7 @@ fn images(conn_cfg: DbConnectionConfig, matches: &ArgMatches) -> Result<()> { } fn submits(conn_cfg: DbConnectionConfig, matches: &ArgMatches) -> Result<()> { + let limit = matches.value_of("limit").map(i64::from_str).transpose()?.unwrap_or(50); let csv = matches.is_present("csv"); let hdrs = mk_header(vec!["id", "time", "uuid"]); let conn = crate::db::establish_connection(conn_cfg)?; @@ -273,6 +282,7 @@ fn submits(conn_cfg: DbConnectionConfig, matches: &ArgMatches) -> Result<()> { } else { // default: Get all submits schema::submits::table + .limit(limit) .load::<models::Submit>(&conn)? .into_iter() .map(submit_to_vec) @@ -291,6 +301,7 @@ fn submits(conn_cfg: DbConnectionConfig, matches: &ArgMatches) -> Result<()> { fn jobs(conn_cfg: DbConnectionConfig, matches: &ArgMatches) -> Result<()> { use crate::schema::jobs::dsl; + let limit = matches.value_of("limit").map(i64::from_str).transpose()?.unwrap_or(50); let csv = matches.is_present("csv"); let hdrs = mk_header(vec![ "id", @@ -328,6 +339,7 @@ fn jobs(conn_cfg: DbConnectionConfig, matches: &ArgMatches) -> Result<()> { .eq(env_name.as_ref()) .and(schema::envvars::dsl::value.eq(env_value)) }) + .limit(limit) .load::<( models::Job, models::Submit, @@ -337,7 +349,8 @@ fn jobs(conn_cfg: DbConnectionConfig, matches: &ArgMatches) -> Result<()> { )>(&conn) .map_err(Error::from) } else { - sel.load::<( + sel.limit(limit) + .load::<( models::Job, models::Submit, models::Endpoint, @@ -353,6 +366,7 @@ fn jobs(conn_cfg: DbConnectionConfig, matches: &ArgMatches) -> Result<()> { .inner_join(crate::schema::endpoints::table) .inner_join(crate::schema::packages::table) .left_outer_join(schema::job_envs::table.inner_join(schema::envvars::table)) + .limit(limit) .load::<( models::Job, models::Submit, |