diff options
author | Kai WU <kaiwu2004@gmail.com> | 2024-07-28 15:44:03 +0800 |
---|---|---|
committer | Kai WU <kaiwu2004@gmail.com> | 2024-07-28 15:44:03 +0800 |
commit | 8aaff337727511b55244e9b1683e061e99adbbb4 (patch) | |
tree | c9bf486d4bc0ed911d05aa00ae96796b53ec6eb5 /src | |
parent | a6720dd992217b7efa15dd0322b2e517e5d9d5a1 (diff) | |
download | glv8-8aaff337727511b55244e9b1683e061e99adbbb4.tar.gz glv8-8aaff337727511b55244e9b1683e061e99adbbb4.zip |
fix plv8 catch error 2
Diffstat (limited to 'src')
-rw-r--r-- | src/app/plv8.gleam | 17 |
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 { |