convert TEXT[] to Vec<String>

pull/35/head
Takayuki Maeda 3 years ago
parent 213f49944e
commit 6c8d0de93b

@ -113,7 +113,7 @@ impl Pool for PostgresPool {
for column in row.columns() {
match convert_column_value_to_string(&row, column) {
Ok(v) => new_row.push(v),
Err(_) => {
Err(err) => {
if json_records.is_none() {
json_records = Some(
self.get_json_records(database, table, page, filter.clone())
@ -129,6 +129,9 @@ impl Pool for PostgresPool {
{
serde_json::Value::String(v) => new_row.push(v.to_string()),
serde_json::Value::Null => new_row.push("NULL".to_string()),
serde_json::Value::Array(v) => {
new_row.push(v.iter().map(|v| v.to_string()).join(","))
}
_ => (),
}
}
@ -275,11 +278,17 @@ fn convert_column_value_to_string(row: &PgRow, column: &PgColumn) -> anyhow::Res
}
}
"BOOL" => {
if let Ok(value) = row.try_get(column_name) {
if let Ok(value) = row.try_get::<Option<bool>, _>(column_name) {
let value: Option<bool> = value;
return Ok(value.map_or("NULL".to_string(), |v| v.to_string()));
}
}
"TEXT[]" => {
if let Ok(value) = row.try_get(column_name) {
let value: Option<Vec<String>> = value;
return Ok(value.map_or("NULL".to_string(), |v| v.join(",").to_string()));
}
}
_ => (),
}
Err(anyhow::anyhow!(

Loading…
Cancel
Save