fql_parser/
js.rs

1use wasm_bindgen::prelude::*;
2
3use fql_deserialize as des;
4use fql_serialize as se;
5
6#[wasm_bindgen]
7pub fn serialize_fql(query: &str) -> Result<String, JsError> {
8  se::serialize_fql(query).map_err(|err| JsError::new(&format!("{}", err)))
9}
10
11#[wasm_bindgen]
12pub fn parse_fauna_response(response: &str) -> Result<String, JsError> {
13  des::parse_fauna_response(response).map_err(|err| JsError::new(&format!("{}", err)))
14}
15
16#[wasm_bindgen]
17pub fn parse_expr(expr: &str) -> Result<String, JsError> {
18  des::parse_expr(expr).map_err(|err| JsError::new(&format!("{}", err)))
19}
20
21#[wasm_bindgen]
22pub fn to_fql_string(json: &str) -> Result<String, JsError> {
23  des::to_fql_string(json).map_err(|err| JsError::new(&format!("{}", err)))
24}
25
26#[cfg(test)]
27mod tests {
28  use super::*;
29
30  #[test]
31  fn parse_fauna_response_works() {
32    let response = r#"{
33            "resource": {
34                "@query":{
35                    "api_version": "4",
36                    "lambda": [],
37                    "expr": true
38                }
39            }
40        }"#;
41    let transformed = parse_fauna_response(response.into())
42      .map_err(|_| ())
43      .unwrap();
44
45    let expected = r#"{"resource":"Query(Lambda([],true))"}"#;
46
47    assert_eq!(transformed, expected)
48  }
49
50  #[test]
51  fn parse_expr_works() {
52    let expr = r#"{
53            "@query":{
54                "api_version": "4",
55                "lambda": [],
56                "expr": true
57            }
58        }"#;
59    let transformed = parse_expr(expr.into()).map_err(|_| ()).unwrap();
60
61    let expected = r#""Query(Lambda([],true))""#;
62
63    assert_eq!(transformed, expected)
64  }
65
66  #[test]
67  fn to_fql_string_works() {
68    let fql = r#"{
69            "query":{
70                "lambda": [],
71                "expr": true
72            }
73        }"#;
74    let transformed = to_fql_string(fql.into()).map_err(|_| ()).unwrap();
75
76    let expected = r#"Query(Lambda([],true))"#;
77
78    assert_eq!(transformed, expected)
79  }
80}