This repository contains unofficial patterns, sample code, or tools to help developers build more effectively with [Fauna][fauna]. All [Fauna Labs][fauna-labs] repositories are provided “as-is” and without support. By using this repository or its contents, you agree that this repository may never be officially supported and moved to the [Fauna organization][fauna-organization]. # FQL parser This is a Rust crate and NPM package that parses raw FQL queries into the wire protocol format. ## Usage ### Rust To use the parser, add the following to your `Cargo.toml`: ```toml [dependencies] fql-parser = "0.2.0" ``` Then, in your code, import the crate: ```rust use crate::fql_parser; fn main() { /* ... */ } ``` The `se` module contains the function to serialize FQL strings to JSON ```rust let fql = "Add(2, 2)"; let json = fql_parser::se::serialize_fql_query(fql); println!("{}", json); ``` ```shell {"add":[2,2]} ``` The `des` module contains functions to deserialize JSON into special Fauna types or FQL strings ```rust let json = r#"{ "@ref": { "id":"101", "collection": { "@ref":{ "id": "things", "collection": { "@ref": { "id": "collections"} } } } } }"#; let fql = fql_parser::des::to_fql_string(json); println!("{}", fql); ``` ```shell Ref(Collection("things"),"101") ``` ### JavaScript/TypeScript TODO ## Building and publishing the crate ### Rust ```sh cargo build # Publish to https://crates.io/crates/fql-parser cargo publish ``` ### NPM ```sh make build npm publish ``` [fauna]: https://www.fauna.com/ [fauna-labs]: https://github.com/fauna-labs [fauna-organization]: https://github.com/fauna