#string #connection #parser #net #wasm #jdbc

connection-string

Connection string parsing in Rust (and WebAssembly)

16 releases

0.2.0 Mar 31, 2023
0.1.14 Feb 4, 2022
0.1.13 Feb 10, 2021
0.1.12 Jan 25, 2021
0.1.10 Oct 27, 2020

#76 in Database interfaces

Download history 24522/week @ 2023-12-16 10860/week @ 2023-12-23 15476/week @ 2023-12-30 23762/week @ 2024-01-06 26242/week @ 2024-01-13 25138/week @ 2024-01-20 26589/week @ 2024-01-27 30675/week @ 2024-02-03 31086/week @ 2024-02-10 19947/week @ 2024-02-17 18586/week @ 2024-02-24 18562/week @ 2024-03-02 20836/week @ 2024-03-09 26636/week @ 2024-03-16 21716/week @ 2024-03-23 18664/week @ 2024-03-30

90,358 downloads per month
Used in 48 crates (2 directly)

MIT/Apache

45KB
898 lines

connection-string

ADO.net and JDBC connection string parsing in Rust and JavaScript

Installation for Rust

$ cargo add connection-string

Usage for JavaScript

The crate is available in npm as @pimeys/connection-string. Usage patters try to follow the Rust version as close as possible. Please see the Rust docs for more information.

JDBC:

const j = new JdbcString("jdbc:sqlserver://localhost\\INSTANCE:1433;database=master;user=SA;password={my_password;123}");

console.log(j.server_name()); // "localhost"
console.log(j.port()); // 1433
console.log(j.instance_name()); // "INSTANCE"
console.log(j.get("database")); // "master"
console.log(j.get("password")); // "my_password;123" (see escaping)
console.log(j.keys()); // ["database", "user", "password"]
console.log(j.set("password", "a;;new;;password")); // "my_password;123" (returns the old value, if available)

// "jdbc:sqlserver://localhost\INSTANCE:1433;user=SA;database=master;password=a{;;}new{;;}password"
console.log(j.to_string())

ADO.net:

const a = new AdoNetString("server=tcp:localhost,1433;user=SA;password=a{;;}new{;;}password");

console.log(a.get("password")); // a;;new;;password
console.log(a.set("user", "john")); // "SA" (returns the old value, if available)

// "server=tcp:localhost,1433;user=john;password=a{;;}new{;;}password"
console.log(j.to_string())

Safety

This crate uses #![deny(unsafe_code)] to ensure everything is implemented in 100% Safe Rust.

Contributing

Want to join us? Check out our "Contributing" guide and take a look at some of these issues:

Building

The build procedure and dependencies are defined in the provided flake.nix file. Please install the unstable Nix with flakes support (Linux, macOS).

The WASM module can be built with:

nix build

This creates a link result to the current directory, containing a NodeJS package with the Rust code compiled as WASM bytecode.

Testing

Run the tests with the nix subcommand:

nix run .#test

Publishing

The updatePackageVersion command changes the package version to the Rust Cargo.toml and JavaScript package.json at the same time:

nix run .#updatePackageVersion 0.1.14

Don't forget to add the tag before publishing the library:

git tag v0.1.14

The publishing can be done separately or together with the publish command:

nix run .#publishRust
nix run .#publishJavascript

or

nix run .#publish

Please be sure you have the corresponding publishing rights in crates and npmjs.

License

Licensed under either of Apache License, Version 2.0 or MIT license at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in this crate by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

No runtime deps