Skip to content
Snippets Groups Projects
Commit 26b12d9c authored by vindarel's avatar vindarel
Browse files

[feat] add -h/--human parameter to dbex members

to print timestamps as a date.

this was actually coded by @librelois in a live session !
parent 824e8d58
No related branches found
No related tags found
1 merge request!120WIP: [feat] add -h/--human parameter to dbex members
......@@ -76,6 +76,9 @@ pub struct MembersOpt {
#[structopt(short = "e", long = "expire")]
/// show members expire date
pub expire: bool,
/// human readable output
#[structopt(short = "h", long = "human")]
pub human_readable: bool,
}
#[derive(StructOpt, Debug, Clone)]
......
......@@ -322,7 +322,10 @@ impl<'a, 'b: 'a> DuniterCore<'b, 'a, DuRsConf> {
profile.as_str(),
&conf,
opts.csv,
&DBExQuery::WotQuery(DBExWotQuery::ExpireMembers(members_opts.reverse)),
&DBExQuery::WotQuery(DBExWotQuery::ExpireMembers(
members_opts.reverse,
members_opts.human_readable,
)),
);
} else {
dbex(
......
......@@ -10,6 +10,7 @@ edition = "2018"
path = "src/lib.rs"
[dependencies]
chrono = "0.4.6"
dirs = "1.0.2"
duniter-conf = { path = "../../../core/conf" }
dup-crypto = { path = "../../../tools/crypto" }
......
......@@ -14,6 +14,8 @@
// along with this program. If not, see <https://www.gnu.org/licenses/>.
use crate::*;
use chrono::prelude::*;
use dubp_documents::documents::transaction::*;
use duniter_module::DuniterConf;
use dup_crypto::keys::*;
......@@ -28,7 +30,7 @@ pub enum DBExWotQuery {
/// Ask distance of all members
AllDistances(bool),
/// Show members expire date
ExpireMembers(bool),
ExpireMembers(bool, bool),
/// Show members list
ListMembers(bool),
/// Ask member datas
......@@ -228,7 +230,7 @@ pub fn dbex_wot<DC: DuniterConf>(profile: &str, conf: &DC, csv: bool, query: &DB
compute_distances_duration.subsec_millis()
);
}
DBExWotQuery::ExpireMembers(ref reverse) => {
DBExWotQuery::ExpireMembers(reverse, human_readable) => {
// Open blockchain database
let blockchain_db = open_file_db::<LocalBlockchainV10Datas>(&db_path, "blockchain.db")
.expect("Fail to open blockchain db");
......@@ -263,15 +265,21 @@ pub fn dbex_wot<DC: DuniterConf>(profile: &str, conf: &DC, csv: bool, query: &DB
expire_dates
})
.expect("Fail to read ms db");
if *reverse {
if reverse {
expire_dates.sort_unstable_by(|(_, d1), (_, d2)| d1.cmp(&d2));
} else {
expire_dates.sort_unstable_by(|(_, d1), (_, d2)| d2.cmp(&d1));
}
for (node_id, expire_date) in expire_dates {
if human_readable {
let datetime = NaiveDateTime::from_timestamp(expire_date as i64, 0);
let human_expire_date = datetime.format("%Y-%m-%d %H:%M:%S UTC");
println!("{}, {}", wot_uid_index[&node_id], human_expire_date);
} else {
println!("{}, {}", wot_uid_index[&node_id], expire_date);
}
}
}
DBExWotQuery::MemberDatas(ref uid) => {
println!(" Members count = {}.", members_count);
if let Some(pubkey) = durs_blockchain_dal::readers::identity::get_pubkey_from_uid(
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment