aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorKai WU <kaiwu2004@gmail.com>2024-07-28 15:44:03 +0800
committerKai WU <kaiwu2004@gmail.com>2024-07-28 15:44:03 +0800
commit8aaff337727511b55244e9b1683e061e99adbbb4 (patch)
treec9bf486d4bc0ed911d05aa00ae96796b53ec6eb5 /src
parenta6720dd992217b7efa15dd0322b2e517e5d9d5a1 (diff)
downloadglv8-8aaff337727511b55244e9b1683e061e99adbbb4.tar.gz
glv8-8aaff337727511b55244e9b1683e061e99adbbb4.zip
fix plv8 catch error 2
Diffstat (limited to 'src')
-rw-r--r--src/app/plv8.gleam17
1 files changed, 12 insertions, 5 deletions
diff --git a/src/app/plv8.gleam b/src/app/plv8.gleam
index 0b2c035..4df2c45 100644
--- a/src/app/plv8.gleam
+++ b/src/app/plv8.gleam
@@ -7,6 +7,7 @@ import gleam/javascript/array.{type Array}
import gleam/json
import gleam/list
import gleam/result
+import gleam/string
import glv8
import glv8/database
import glv8/util.{elog_notice}
@@ -41,20 +42,26 @@ pub fn catch_sql_error() -> Nil {
}
}
-pub fn catch_sql_error2() -> Array(String) {
+pub fn catch_sql_error2() -> String {
let rs = database.execute_as("throw SQL error", Nil, dynamic.string)
- use <- bool.guard(result.is_ok(rs), result.unwrap(rs, [] |> array.from_list))
+ let fold = fn(rx) { array.fold(rx, "", string.append) }
+
+ use <- bool.guard(
+ when: result.is_ok(rs),
+ return: result.map(rs, fold) |> result.unwrap(""),
+ )
rs
|> result.try_recover(fn(e) {
let _ = elog_notice(e |> glv8.error_to_string)
database.execute_as(
- "select 'and execute queries again'",
+ "select 'and execute queries again' t",
Nil,
- dynamic.string,
+ dynamic.field("t", dynamic.string),
)
})
- |> result.unwrap([] |> array.from_list)
+ |> result.map(fold)
+ |> result.unwrap("")
}
pub type Rec {