Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/prisma/connection-string
connection-string + @pimeys/connection-string
https://github.com/prisma/connection-string
Last synced: about 2 months ago
JSON representation
connection-string + @pimeys/connection-string
- Host: GitHub
- URL: https://github.com/prisma/connection-string
- Owner: prisma
- License: apache-2.0
- Created: 2020-09-10T09:29:34.000Z (over 4 years ago)
- Default Branch: main
- Last Pushed: 2023-03-31T15:10:55.000Z (almost 2 years ago)
- Last Synced: 2024-04-23T12:58:56.483Z (8 months ago)
- Language: Rust
- Homepage:
- Size: 55.7 KB
- Stars: 12
- Watchers: 27
- Forks: 3
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- Contributing: .github/CONTRIBUTING.md
- License: LICENSE-APACHE
- Code of conduct: .github/CODE_OF_CONDUCT.md
- Security: SECURITY.md
Awesome Lists containing this project
README
connection-string
ADO.net and JDBC connection string parsing in Rust and JavaScript
## Installation for Rust
```sh
$ 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](https://docs.rs/connection-string) for more information.JDBC:
``` javascript
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:
``` javascript
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][contributing] and take a
look at some of these issues:- [Issues labeled "good first issue"][good-first-issue]
- [Issues labeled "help wanted"][help-wanted][contributing]: https://github.com/prisma/connection-string/blob/master.github/CONTRIBUTING.md
[good-first-issue]: https://github.com/prisma/connection-string/labels/good%20first%20issue
[help-wanted]: https://github.com/prisma/connection-string/labels/help%20wanted## Building
The build procedure and dependencies are defined in the provided
[flake.nix](flake.nix) file. Please install the unstable Nix with flakes support
([Linux](https://nixos.wiki/wiki/Nix_Installation_Guide), [macOS](https://gist.github.com/sagittaros/32dc6ffcbc423dc0fed7eef24698d5ca)).The WASM module can be built with:
```bash
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:
```bash
nix run .#test
```## Publishing
The `updatePackageVersion` command changes the package version to the Rust `Cargo.toml` and
JavaScript `package.json` at the same time:```bash
nix run .#updatePackageVersion 0.1.14
```Don't forget to add the tag before publishing the library:
```bash
git tag v0.1.14
```The publishing can be done separately or together with the `publish` command:
```bash
nix run .#publishRust
nix run .#publishJavascript
```or
```bash
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.