client: display show-db output with human readable sizes
All checks were successful
All checks were successful
This commit is contained in:
10
Cargo.lock
generated
10
Cargo.lock
generated
@@ -861,6 +861,15 @@ dependencies = [
|
|||||||
"windows-sys 0.61.2",
|
"windows-sys 0.61.2",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "humansize"
|
||||||
|
version = "2.1.3"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "6cb51c9a029ddc91b07a787f1d86b53ccfa49b0e86688c946ebe8d3555685dd7"
|
||||||
|
dependencies = [
|
||||||
|
"libm",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "icu_collections"
|
name = "icu_collections"
|
||||||
version = "2.1.1"
|
version = "2.1.1"
|
||||||
@@ -1205,6 +1214,7 @@ dependencies = [
|
|||||||
"dialoguer",
|
"dialoguer",
|
||||||
"futures-util",
|
"futures-util",
|
||||||
"git2",
|
"git2",
|
||||||
|
"humansize",
|
||||||
"indoc",
|
"indoc",
|
||||||
"itertools",
|
"itertools",
|
||||||
"landlock",
|
"landlock",
|
||||||
|
|||||||
@@ -29,6 +29,7 @@ const_format = "0.2.35"
|
|||||||
derive_more = { version = "2.1.0", features = ["display", "error"] }
|
derive_more = { version = "2.1.0", features = ["display", "error"] }
|
||||||
dialoguer = "0.12.0"
|
dialoguer = "0.12.0"
|
||||||
futures-util = "0.3.31"
|
futures-util = "0.3.31"
|
||||||
|
humansize = "2.1.3"
|
||||||
indoc = "2.0.7"
|
indoc = "2.0.7"
|
||||||
itertools = "0.14.0"
|
itertools = "0.14.0"
|
||||||
nix = { version = "0.30.1", features = ["fs", "process", "socket", "user"] }
|
nix = { version = "0.30.1", features = ["fs", "process", "socket", "user"] }
|
||||||
|
|||||||
@@ -26,6 +26,10 @@ pub struct ShowDbArgs {
|
|||||||
/// Print the information as JSON
|
/// Print the information as JSON
|
||||||
#[arg(short, long)]
|
#[arg(short, long)]
|
||||||
json: bool,
|
json: bool,
|
||||||
|
|
||||||
|
/// Show sizes in bytes instead of human-readable format
|
||||||
|
#[arg(short, long)]
|
||||||
|
bytes: bool,
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn show_databases(
|
pub async fn show_databases(
|
||||||
@@ -60,7 +64,7 @@ pub async fn show_databases(
|
|||||||
if args.json {
|
if args.json {
|
||||||
print_list_databases_output_status_json(&databases);
|
print_list_databases_output_status_json(&databases);
|
||||||
} else {
|
} else {
|
||||||
print_list_databases_output_status(&databases);
|
print_list_databases_output_status(&databases, args.bytes);
|
||||||
|
|
||||||
if databases.iter().any(|(_, res)| {
|
if databases.iter().any(|(_, res)| {
|
||||||
matches!(
|
matches!(
|
||||||
|
|||||||
@@ -30,7 +30,10 @@ pub enum ListDatabasesError {
|
|||||||
MySqlError(String),
|
MySqlError(String),
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn print_list_databases_output_status(output: &ListDatabasesResponse) {
|
pub fn print_list_databases_output_status(
|
||||||
|
output: &ListDatabasesResponse,
|
||||||
|
display_size_as_bytes: bool,
|
||||||
|
) {
|
||||||
let mut final_database_list: Vec<&DatabaseRow> = Vec::new();
|
let mut final_database_list: Vec<&DatabaseRow> = Vec::new();
|
||||||
for (db_name, db_result) in output {
|
for (db_name, db_result) in output {
|
||||||
match db_result {
|
match db_result {
|
||||||
@@ -52,7 +55,11 @@ pub fn print_list_databases_output_status(output: &ListDatabasesResponse) {
|
|||||||
"Users",
|
"Users",
|
||||||
"Collation",
|
"Collation",
|
||||||
"Character Set",
|
"Character Set",
|
||||||
|
if display_size_as_bytes {
|
||||||
"Size (Bytes)"
|
"Size (Bytes)"
|
||||||
|
} else {
|
||||||
|
"Size"
|
||||||
|
}
|
||||||
]);
|
]);
|
||||||
for db in final_database_list {
|
for db in final_database_list {
|
||||||
table.add_row(row![
|
table.add_row(row![
|
||||||
@@ -61,7 +68,11 @@ pub fn print_list_databases_output_status(output: &ListDatabasesResponse) {
|
|||||||
db.users.iter().map(|user| user.as_str()).join("\n"),
|
db.users.iter().map(|user| user.as_str()).join("\n"),
|
||||||
db.collation.as_deref().unwrap_or("N/A"),
|
db.collation.as_deref().unwrap_or("N/A"),
|
||||||
db.character_set.as_deref().unwrap_or("N/A"),
|
db.character_set.as_deref().unwrap_or("N/A"),
|
||||||
db.size_bytes,
|
if display_size_as_bytes {
|
||||||
|
db.size_bytes.to_string()
|
||||||
|
} else {
|
||||||
|
humansize::format_size(db.size_bytes, humansize::DECIMAL)
|
||||||
|
}
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user