Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/robsdedude/neo4j-rust-driver
Hobby project: bolt driver for Neo4j written in Rust
https://github.com/robsdedude/neo4j-rust-driver
binary-protocol cypher database-driver driver graph-database neo4j neo4j-database neo4j-driver protocol rust
Last synced: 4 days ago
JSON representation
Hobby project: bolt driver for Neo4j written in Rust
- Host: GitHub
- URL: https://github.com/robsdedude/neo4j-rust-driver
- Owner: robsdedude
- License: apache-2.0
- Created: 2022-10-23T21:58:43.000Z (about 2 years ago)
- Default Branch: master
- Last Pushed: 2024-05-03T15:23:03.000Z (6 months ago)
- Last Synced: 2024-10-24T09:45:13.350Z (12 days ago)
- Topics: binary-protocol, cypher, database-driver, driver, graph-database, neo4j, neo4j-database, neo4j-driver, protocol, rust
- Language: Rust
- Homepage: https://docs.rs/neo4j/
- Size: 834 KB
- Stars: 7
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE.txt
Awesome Lists containing this project
README
Neo4j Driver for Rust
=====================Disclaimer:
* While I'm currently affiliated with Neo4j, this is my private hobby project.
It's not an officially supported piece of software by Neo4j.
* This is a work in progress, and it's mostly developed in my spare time.
* This project is primarily meant for private studies.
Yet, I decided to publish it as it might be useful for others as well.## MSRV
Currently, this crate's minimum supported Rust version is `1.70`.
A bump in MSRV is considered a minor breaking change.## Feature Progress
* [x] (Well-Written) Docs and Examples
* [ ] Driver
* [ ] Config
* [x] `user_agent`
* [x] `auth`
* [x] basic
* [x] kerberos
* [x] bearer
* [x] custom
* [x] `max_connection_pool_size`
* [x] `fetch_size`
* [x] `connection_timeout`
* [x] `connection_acquisition_timeout`
* [x] `resolver`
* [x] `max_connection_lifetime`
* [x] routing and direct connections
* [x] `keep_alive`
* [x] `TLS`
* [ ] mTLS for 2FA
* [x] `.session`
* [x] `.supports_multi_db`
* [x] `.supports_session_auth`
* [x] `.execute_query`
* [x] `.verify_connectivity`
* [x] `.verify_authentication`
* [x] `.get_server_info`
* [x] `.is_encrypted`
* [x] Session
* [x] Config
* [x] database
* [x] bookmarks
* [x] impersonated_user
* [x] fetch_size
* [x] session_auth
* [x] Auto Commit
* [x] Transaction
* [x] Config
* [x] Metadata
* [x] Timeout
* [x] Unmanaged
* [x] With Retry
* [ ] Result (`RecordStream`)
* [x] `.keys`
* [x] `.consume` (Summary)
* [x] `.server_info`
* [x] `.address`
* [x] `.server_agent`
* [x] `.protocol_version`
* [x] `.database`
* [x] `.query`, `.parameters` (won't implement)
* [x] `.query_type`
* [x] `.plan`
* [x] `.profile`
* [x] `.notifications`
* [x] `.counters`
* [x] `.result_available_after`
* [x] `.result_consumed_after`
* [x] `.single`
* [ ] `.into::()`
* [ ] `.closed` (not sure if needed?)
* [ ] Record
* [x] most basic functionality
* [ ] ergonomic way to access by key
* [x] Bookmark Management
* [x] Protocol Versions
* [x] 4.4
* [x] 5.0 (utc fix)
* [x] 5.1 (re-auth)
* [x] 5.2 (notification filtering)
* [x] 5.3 (bolt agent)
* [x] 5.4 (telemetry)
* [x] Types
* [x] `Null`
* [x] `Integer`
* [x] `Float`
* [x] `String`
* [x] `Boolean`
* [x] `Bytes`
* [x] `List`
* [x] `Map`
* [x] `Node`
* [x] `Relationship`
* [x] `Path`
* [x] `Spatial` (point)
* [x] `Temporal` (date, time, datetime, duration)
* [ ] Proper Unit Tests
* [x] CI
* [x] rustfmt
* [x] clippy
* [x] Unit Tests
* [x] Public API SemVer Compatibility Tests ([cargo-public-api](https://github.com/enselic/cargo-public-api))
* [x] Exposed Dependency Types Check ([cargo-check-external-types](https://github.com/awslabs/cargo-check-external-types))
* [x] TestKit## Note on async
Currently, there are no plans to add async support until a proper abstraction over multiple runtimes is available so that users can choose their preferred runtime.
As it stands, the async ecosystem would either force this crate to dictate a runtime or do an ugly dance to support multiple runtimes.
Even then, the supported runtimes would be limited to the ones chosen by this crate.