summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthias Beyer <matthias.beyer@atos.net>2021-02-11 14:31:05 +0100
committerMatthias Beyer <mail@beyermatthias.de>2021-02-11 18:57:25 +0100
commitc863dc06fee0609ac9c92d1d46c5ff7bf5cc9377 (patch)
tree150df72f4c43e892f28fa81fb0892ea1eb686bde
parent2b246457e8f13b42a31b8ee3f5632dab09c21a85 (diff)
Add output limit, default 50
Signed-off-by: Matthias Beyer <matthias.beyer@atos.net>
-rw-r--r--src/cli.rs40
-rw-r--r--src/commands/db.rs16
2 files changed, 55 insertions, 1 deletions
diff --git a/src/cli.rs b/src/cli.rs
index d75d625..9877edd 100644
--- a/src/cli.rs
+++ b/src/cli.rs
@@ -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,