Add ability to specify which meta columns are listed

This commit is contained in:
Andrew Phillips
2023-09-18 14:27:36 +00:00
parent 2e1afbd7d7
commit 49886b953a

View File

@@ -481,14 +481,12 @@ fn mode_list(cmd: &mut Command, args: Args, ids: &mut Vec<i64>, tags: &Vec<Strin
let mut item_meta: HashMap<String, String> = HashMap::new(); let mut item_meta: HashMap<String, String> = HashMap::new();
for meta in db::get_item_meta(conn, item)? { for meta in db::get_item_meta(conn, item)? {
meta_columns.insert(meta.name.clone());
item_meta.insert(meta.name.clone(), meta.value); item_meta.insert(meta.name.clone(), meta.value);
} }
meta_by_item.insert(item_id, item_meta); meta_by_item.insert(item_id, item_meta);
}; };
let mut meta_columns_sorted = Vec::from_iter(meta_columns); let meta_columns = args.options.list_meta.split(",");
meta_columns_sorted.sort();
let mut table = Table::new(); let mut table = Table::new();
if std::io::stdout().is_terminal() { if std::io::stdout().is_terminal() {
@@ -506,7 +504,7 @@ fn mode_list(cmd: &mut Command, args: Args, ids: &mut Vec<i64>, tags: &Vec<Strin
b->"Tags", b->"Tags",
); );
for name in &meta_columns_sorted { for name in meta_columns.clone() {
title_row.add_cell(Cell::new(name).with_style(Attr::Bold)); title_row.add_cell(Cell::new(name).with_style(Attr::Bold));
} }
@@ -535,7 +533,7 @@ fn mode_list(cmd: &mut Command, args: Args, ids: &mut Vec<i64>, tags: &Vec<Strin
let mut table_row = Row::new(vec![id_cell,ts_cell,size_cell, compression_cell, file_size_cell, tags_cell]); let mut table_row = Row::new(vec![id_cell,ts_cell,size_cell, compression_cell, file_size_cell, tags_cell]);
let item_meta = meta_by_item.get(&item_id).unwrap(); let item_meta = meta_by_item.get(&item_id).unwrap();
for name in &meta_columns_sorted { for name in meta_columns.clone() {
match item_meta.get(name) { match item_meta.get(name) {
Some(value) => table_row.add_cell(Cell::new(value)), Some(value) => table_row.add_cell(Cell::new(value)),
None => table_row.add_cell(Cell::new("")) None => table_row.add_cell(Cell::new(""))