From f1556f880ed672cae41168c93d5aaf6773bf50bf Mon Sep 17 00:00:00 2001 From: Jason Volk Date: Mon, 10 Dec 2018 18:44:41 -0800 Subject: [PATCH] modules/console: Split db compact into db compact files. --- modules/console.cc | 56 ++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 54 insertions(+), 2 deletions(-) diff --git a/modules/console.cc b/modules/console.cc index 3d05d0cc7..2bdf46ea9 100644 --- a/modules/console.cc +++ b/modules/console.cc @@ -1493,9 +1493,61 @@ try }; compact(column, range, level); + }}; - if(level >= -1 && range.first.empty() && range.second.empty()) - compact(column, level); + if(colname != "*") + compact_column(colname); + else + for(const auto &column : database.columns) + compact_column(name(*column)); + + out << "done" << std::endl; + return true; +} +catch(const std::out_of_range &e) +{ + out << "No open database by that name" << std::endl; + return true; +} + +bool +console_cmd__db__compact__files(opt &out, const string_view &line) +try +{ + const params param{line, " ", + { + "dbname", "[colname]", "[level]" + }}; + + const auto dbname + { + param.at(0) + }; + + const auto colname + { + param.at(1, "*"_sv) + }; + + const auto level + { + param.at(2, -1) + }; + + auto &database + { + db::database::get(dbname) + }; + + const auto compact_column{[&out, &database, &level] + (const string_view &colname) + { + db::column column + { + database, colname + }; + + compact(column, level); }}; if(colname != "*")