aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/glv8/database.gleam7
-rw-r--r--src/glv8/util.gleam6
-rw-r--r--src/glv8_ffi.mjs4
3 files changed, 14 insertions, 3 deletions
diff --git a/src/glv8/database.gleam b/src/glv8/database.gleam
index a31ef88..3f0a6a8 100644
--- a/src/glv8/database.gleam
+++ b/src/glv8/database.gleam
@@ -3,6 +3,7 @@ import gleam/dynamic/decode.{type Decoder}
import gleam/javascript/array.{type Array}
import gleam/result
import glv8.{type DBError, type DecodeErrors}
+import glv8/util.{from}
pub type Row {
Row
@@ -39,7 +40,7 @@ pub fn shift_as(
shift(rs)
|> result.try(fn(t) {
t.0
- |> dynamic.from
+ |> from
|> f
|> result.map_error(glv8.DBErrorDecode)
})
@@ -66,7 +67,7 @@ pub fn decode(
) -> Result(Array(a), DBError) {
rs
|> array.to_list
- |> dynamic.from
+ |> from
|> decode.run(decode.list(f))
|> result.map(array.from_list)
|> result.map_error(glv8.DBErrorDecode)
@@ -137,7 +138,7 @@ pub fn decode0(
decoder f: fn(Dynamic) -> Result(a, DecodeErrors),
) -> Result(a, DBError) {
r
- |> dynamic.from
+ |> from
|> f
|> result.map_error(glv8.DBErrorDecode)
}
diff --git a/src/glv8/util.gleam b/src/glv8/util.gleam
index d869358..a3029b4 100644
--- a/src/glv8/util.gleam
+++ b/src/glv8/util.gleam
@@ -8,6 +8,12 @@ import glv8.{
///
///
///
+@external(javascript, "../glv8_ffi.mjs", "identity")
+pub fn from(a: anything) -> Dynamic
+
+///
+///
+///
@external(javascript, "../glv8_ffi.mjs", "object")
pub fn object() -> JsObject
diff --git a/src/glv8_ffi.mjs b/src/glv8_ffi.mjs
index 5ed6fac..d84e739 100644
--- a/src/glv8_ffi.mjs
+++ b/src/glv8_ffi.mjs
@@ -2,6 +2,10 @@ import { Ok, Error } from "./gleam.mjs"
import { DBErrorJson } from "./glv8.mjs"
import { NilRow } from "./glv8/database.mjs"
+export function identity(x) {
+ return x;
+}
+
export function object() {
return {};
}