Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

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

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.