https://github.com/hex2f/node-sql-rs
A Neon based brige for the Rust sqlparser-rs
https://github.com/hex2f/node-sql-rs
Last synced: 8 months ago
JSON representation
A Neon based brige for the Rust sqlparser-rs
- Host: GitHub
- URL: https://github.com/hex2f/node-sql-rs
- Owner: hex2f
- Created: 2023-04-07T17:20:41.000Z (about 3 years ago)
- Default Branch: main
- Last Pushed: 2023-04-07T19:12:02.000Z (about 3 years ago)
- Last Synced: 2025-09-15T06:59:50.276Z (9 months ago)
- Language: Rust
- Size: 4.88 KB
- Stars: 1
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# sql-rs
**sql-rs:** A Neon based brige for the Rust sqlparser-rs
## Installing sql-rs
Installing sql-rs requires a [supported version of Node and Rust](https://github.com/neon-bindings/neon#platform-support).
You can install the project with npm.
```sh
$ npm install sql-rs
```
This fully installs the project, including installing any dependencies and running the build.
## Using sql-rs
Currently you need to manually parse the JSON returned by the `parse_sql_to_json_string` function. This is because there's currently no easy way to convert all of the Rust `sqlparser::ast` structs to JavaScript objects.
```js
const { parse_sql_to_json_string } = require('sql-rs')
const sql = "SELECT id, name FROM users WHERE age > 25"
const ast = JSON.parse(parse_sql_to_json_string(sql))
```
## Available Scripts
In the project directory, you can run:
### `npm install`
Installs the project, including running `npm run build`.
### `npm build`
Builds the Node addon (`index.node`) from source.
Additional [`cargo build`](https://doc.rust-lang.org/cargo/commands/cargo-build.html) arguments may be passed to `npm build` and `npm build-*` commands. For example, to enable a [cargo feature](https://doc.rust-lang.org/cargo/reference/features.html):
```
npm run build -- --feature=beetle
```
#### `npm build-debug`
Alias for `npm build`.
#### `npm build-release`
Same as [`npm build`](#npm-build) but, builds the module with the [`release`](https://doc.rust-lang.org/cargo/reference/profiles.html#release) profile. Release builds will compile slower, but run faster.
### `npm test`
Runs the unit tests by calling `cargo test`. You can learn more about [adding tests to your Rust code](https://doc.rust-lang.org/book/ch11-01-writing-tests.html) from the [Rust book](https://doc.rust-lang.org/book/).
## Project Layout
The directory structure of this project is:
```
sql-rs/
├── Cargo.toml
├── README.md
├── index.node
├── package.json
├── src/
| └── lib.rs
└── target/
```
### Cargo.toml
The Cargo [manifest file](https://doc.rust-lang.org/cargo/reference/manifest.html), which informs the `cargo` command.
### index.node
The Node addon—i.e., a binary Node module—generated by building the project. This is the main module for this package, as dictated by the `"main"` key in `package.json`.
Under the hood, a [Node addon](https://nodejs.org/api/addons.html) is a [dynamically-linked shared object](https://en.wikipedia.org/wiki/Library_(computing)#Shared_libraries). The `"build"` script produces this file by copying it from within the `target/` directory, which is where the Rust build produces the shared object.
### src/
The directory tree containing the Rust source code for the project.
### src/lib.rs
The Rust library's main module.
### target/
Binary artifacts generated by the Rust build.
## Learn More
To learn more about Neon, see the [Neon documentation](https://neon-bindings.com).
To learn more about Rust, see the [Rust documentation](https://www.rust-lang.org).
To learn more about Node, see the [Node documentation](https://nodejs.org).