diff --git a/src/database/mod.rs b/src/database/mod.rs index beec60f..91c074a 100644 --- a/src/database/mod.rs +++ b/src/database/mod.rs @@ -53,6 +53,6 @@ pub trait TableRow: std::marker::Send { #[macro_export] macro_rules! get_or_null { ($value:expr) => { - return Ok($value.map_or("NULL".to_string(), |v| v.to_string())); + $value.map_or("NULL".to_string(), |v| v.to_string()) }; } diff --git a/src/database/mysql.rs b/src/database/mysql.rs index a9eaace..f32c7e3 100644 --- a/src/database/mysql.rs +++ b/src/database/mysql.rs @@ -363,58 +363,58 @@ fn convert_column_value_to_string(row: &MySqlRow, column: &MySqlColumn) -> anyho Ok(value.unwrap_or_else(|| NULL.to_string())) } else if let Ok(value) = row.try_get(column_name) { let value: Option<&str> = value; - get_or_null!(value) + Ok(get_or_null!(value)) } else if let Ok(value) = row.try_get(column_name) { let value: Option = value; - get_or_null!(value) + Ok(get_or_null!(value)) } else if let Ok(value) = row.try_get(column_name) { let value: Option = value; - get_or_null!(value) + Ok(get_or_null!(value)) } else if let Ok(value) = row.try_get(column_name) { let value: Option = value; - get_or_null!(value) + Ok(get_or_null!(value)) } else if let Ok(value) = row.try_get(column_name) { let value: Option = value; - get_or_null!(value) + Ok(get_or_null!(value)) } else if let Ok(value) = row.try_get(column_name) { let value: Option = value; - get_or_null!(value) + Ok(get_or_null!(value)) } else if let Ok(value) = row.try_get(column_name) { let value: Option = value; - get_or_null!(value) + Ok(get_or_null!(value)) } else if let Ok(value) = row.try_get(column_name) { let value: Option = value; - get_or_null!(value) + Ok(get_or_null!(value)) } else if let Ok(value) = row.try_get(column_name) { let value: Option = value; - get_or_null!(value) + Ok(get_or_null!(value)) } else if let Ok(value) = row.try_get(column_name) { let value: Option = value; - get_or_null!(value) + Ok(get_or_null!(value)) } else if let Ok(value) = row.try_get(column_name) { let value: Option = value; - get_or_null!(value) + Ok(get_or_null!(value)) } else if let Ok(value) = row.try_get(column_name) { let value: Option = value; - get_or_null!(value) + Ok(get_or_null!(value)) } else if let Ok(value) = row.try_get(column_name) { let value: Option = value; - get_or_null!(value) + Ok(get_or_null!(value)) } else if let Ok(value) = row.try_get(column_name) { let value: Option = value; - get_or_null!(value) + Ok(get_or_null!(value)) } else if let Ok(value) = row.try_get(column_name) { let value: Option = value; - get_or_null!(value) + Ok(get_or_null!(value)) } else if let Ok(value) = row.try_get(column_name) { let value: Option> = value; - get_or_null!(value) + Ok(get_or_null!(value)) } else if let Ok(value) = row.try_get(column_name) { let value: Option = value; - get_or_null!(value) + Ok(get_or_null!(value)) } else if let Ok(value) = row.try_get(column_name) { let value: Option = value; - get_or_null!(value) + Ok(get_or_null!(value)) } else { anyhow::bail!( "column type not implemented: `{}` {}", diff --git a/src/database/postgres.rs b/src/database/postgres.rs index c574d93..65cf574 100644 --- a/src/database/postgres.rs +++ b/src/database/postgres.rs @@ -469,23 +469,19 @@ fn convert_column_value_to_string(row: &PgRow, column: &PgColumn) -> anyhow::Res let column_name = column.name(); if let Ok(value) = row.try_get(column_name) { let value: Option = value; - get_or_null!(value) - } - if let Ok(value) = row.try_get(column_name) { + Ok(get_or_null!(value)) + } else if let Ok(value) = row.try_get(column_name) { let value: Option = value; - get_or_null!(value) - } - if let Ok(value) = row.try_get(column_name) { + Ok(get_or_null!(value)) + } else if let Ok(value) = row.try_get(column_name) { let value: Option = value; - get_or_null!(value) - } - if let Ok(value) = row.try_get(column_name) { + Ok(get_or_null!(value)) + } else if let Ok(value) = row.try_get(column_name) { let value: Option = value; - get_or_null!(value) - } - if let Ok(value) = row.try_get(column_name) { + Ok(get_or_null!(value)) + } else if let Ok(value) = row.try_get(column_name) { let value: Option<&[u8]> = value; - return Ok(value.map_or("NULL".to_string(), |values| { + Ok(value.map_or("NULL".to_string(), |values| { format!( "\\x{}", values @@ -493,51 +489,42 @@ fn convert_column_value_to_string(row: &PgRow, column: &PgColumn) -> anyhow::Res .map(|v| format!("{:02x}", v)) .collect::() ) - })); - } - if let Ok(value) = row.try_get(column_name) { + })) + } else if let Ok(value) = row.try_get(column_name) { let value: Option = value; - get_or_null!(value) - } - if let Ok(value) = row.try_get(column_name) { + Ok(get_or_null!(value)) + } else if let Ok(value) = row.try_get(column_name) { let value: String = value; - return Ok(value); - } - if let Ok(value) = row.try_get(column_name) { + Ok(value) + } else if let Ok(value) = row.try_get(column_name) { let value: Option> = value; - get_or_null!(value) - } - if let Ok(value) = row.try_get(column_name) { + Ok(get_or_null!(value)) + } else if let Ok(value) = row.try_get(column_name) { let value: Option> = value; - get_or_null!(value) - } - if let Ok(value) = row.try_get(column_name) { + Ok(get_or_null!(value)) + } else if let Ok(value) = row.try_get(column_name) { let value: Option = value; - get_or_null!(value) - } - if let Ok(value) = row.try_get(column_name) { + Ok(get_or_null!(value)) + } else if let Ok(value) = row.try_get(column_name) { let value: Option = value; - get_or_null!(value) - } - if let Ok(value) = row.try_get(column_name) { + Ok(get_or_null!(value)) + } else if let Ok(value) = row.try_get(column_name) { let value: Option = value; - get_or_null!(value) - } - if let Ok(value) = row.try_get(column_name) { + Ok(get_or_null!(value)) + } else if let Ok(value) = row.try_get(column_name) { let value: Option = value; - get_or_null!(value) - } - if let Ok(value) = row.try_get::, _>(column_name) { + Ok(get_or_null!(value)) + } else if let Ok(value) = row.try_get::, _>(column_name) { let value: Option = value; - get_or_null!(value) - } - if let Ok(value) = row.try_get(column_name) { + Ok(get_or_null!(value)) + } else if let Ok(value) = row.try_get(column_name) { let value: Option> = value; - return Ok(value.map_or("NULL".to_string(), |v| v.join(","))); + Ok(value.map_or("NULL".to_string(), |v| v.join(","))) + } else { + anyhow::bail!( + "column type not implemented: `{}` {}", + column_name, + column.type_info().clone().name() + ) } - Err(anyhow::anyhow!( - "column type not implemented: `{}` {}", - column_name, - column.type_info().clone().name() - )) } diff --git a/src/database/sqlite.rs b/src/database/sqlite.rs index a8144cb..2e4af68 100644 --- a/src/database/sqlite.rs +++ b/src/database/sqlite.rs @@ -349,51 +349,42 @@ fn convert_column_value_to_string( let column_name = column.name(); if let Ok(value) = row.try_get(column_name) { let value: Option = value; - return Ok(value.unwrap_or_else(|| "NULL".to_string())); - } - if let Ok(value) = row.try_get(column_name) { + Ok(value.unwrap_or_else(|| "NULL".to_string())) + } else if let Ok(value) = row.try_get(column_name) { let value: Option<&str> = value; - get_or_null!(value) - } - if let Ok(value) = row.try_get(column_name) { + Ok(get_or_null!(value)) + } else if let Ok(value) = row.try_get(column_name) { let value: Option = value; - get_or_null!(value) - } - if let Ok(value) = row.try_get(column_name) { + Ok(get_or_null!(value)) + } else if let Ok(value) = row.try_get(column_name) { let value: Option = value; - get_or_null!(value) - } - if let Ok(value) = row.try_get(column_name) { + Ok(get_or_null!(value)) + } else if let Ok(value) = row.try_get(column_name) { let value: Option = value; - get_or_null!(value) - } - if let Ok(value) = row.try_get(column_name) { + Ok(get_or_null!(value)) + } else if let Ok(value) = row.try_get(column_name) { let value: Option = value; - get_or_null!(value) - } - if let Ok(value) = row.try_get(column_name) { + Ok(get_or_null!(value)) + } else if let Ok(value) = row.try_get(column_name) { let value: Option = value; - get_or_null!(value) - } - if let Ok(value) = row.try_get(column_name) { + Ok(get_or_null!(value)) + } else if let Ok(value) = row.try_get(column_name) { let value: Option> = value; - get_or_null!(value) - } - if let Ok(value) = row.try_get(column_name) { + Ok(get_or_null!(value)) + } else if let Ok(value) = row.try_get(column_name) { let value: Option> = value; - get_or_null!(value) - } - if let Ok(value) = row.try_get(column_name) { + Ok(get_or_null!(value)) + } else if let Ok(value) = row.try_get(column_name) { let value: Option = value; - get_or_null!(value) - } - if let Ok(value) = row.try_get(column_name) { + Ok(get_or_null!(value)) + } else if let Ok(value) = row.try_get(column_name) { let value: Option = value; - get_or_null!(value) + Ok(get_or_null!(value)) + } else { + anyhow::bail!( + "column type not implemented: `{}` {}", + column_name, + column.type_info().clone().name() + ) } - Err(anyhow::anyhow!( - "column type not implemented: `{}` {}", - column_name, - column.type_info().clone().name() - )) }