summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthias Beyer <matthias.beyer@atos.net>2021-06-02 13:03:25 +0200
committerMatthias Beyer <matthias.beyer@atos.net>2021-06-02 13:17:59 +0200
commit1e77f45fc8649b3fbb9e17bd6a5e262617abcc33 (patch)
treec85429100c81c5661194d7764a5b13c78217fb91
parent8cd7b44501d2843cfb2d9307ae2b83db15092028 (diff)
Subcommand "db releases" add date filter
Signed-off-by: Matthias Beyer <matthias.beyer@atos.net>
-rw-r--r--src/cli.rs3
-rw-r--r--src/commands/db.rs13
2 files changed, 15 insertions, 1 deletions
diff --git a/src/cli.rs b/src/cli.rs
index e97308e..f2ae0ac 100644
--- a/src/cli.rs
+++ b/src/cli.rs
@@ -362,6 +362,9 @@ pub fn cli<'a>() -> App<'a> {
.takes_value(false)
.about("Format output as CSV")
)
+
+ .arg(arg_older_than_date("List only releases older than DATE"))
+ .arg(arg_newer_than_date("List only releases newer than DATE"))
)
)
diff --git a/src/commands/db.rs b/src/commands/db.rs
index ac3b53f..24450f7 100644
--- a/src/commands/db.rs
+++ b/src/commands/db.rs
@@ -691,7 +691,7 @@ fn releases(conn_cfg: DbConnectionConfig<'_>, config: &Configuration, matches: &
let csv = matches.is_present("csv");
let conn = conn_cfg.establish_connection()?;
let header = crate::commands::util::mk_header(["Package", "Version", "Date", "Path"].to_vec());
- let data = schema::jobs::table
+ let mut query = schema::jobs::table
.inner_join(schema::packages::table)
.inner_join(schema::artifacts::table)
.inner_join(schema::releases::table
@@ -701,6 +701,17 @@ fn releases(conn_cfg: DbConnectionConfig<'_>, config: &Configuration, matches: &
.order_by(schema::packages::dsl::name.asc())
.then_order_by(schema::packages::dsl::version.asc())
.then_order_by(schema::releases::release_date.asc())
+ .into_boxed();
+
+ if let Some(date) = crate::commands::util::get_date_filter("older_than", matches)? {
+ query = query.filter(schema::releases::release_date.lt(date));
+ }
+
+ if let Some(date) = crate::commands::util::get_date_filter("newer_than", matches)? {
+ query = query.filter(schema::releases::release_date.gt(date));
+ }
+
+ let data = query
.select({
let art = schema::artifacts::all_columns;
let pac = schema::packages::all_columns;