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}