2 releases

0.0.2 Dec 24, 2023
0.0.1 Dec 8, 2023

#2352 in Database interfaces

32 downloads per month

Apache-2.0

1MB
21K SLoC

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.

Feature Progress:

  • (Well-Written) Docs and Examples
  • Driver
    • Config
      • user_agent
      • auth
        • basic
        • kerberos
        • bearer
        • custom
      • max_connection_pool_size
      • fetch_size
      • connection_timeout
      • connection_acquisition_timeout
      • resolver
      • routing and direct connections
      • keep_alive (not supported by std https://github.com/rust-lang/rust/issues/69774)
      • TLS
    • .session
    • .supports_multi_db
    • .supports_session_auth
    • .execute_query
    • .verify_connectivity
    • .verify_authentication
    • .get_server_info
    • .encrypted (not sure if needed?)
  • Session
    • Config
      • database
      • bookmarks
      • impersonated_user
      • fetch_size
      • session_auth
    • Auto Commit
    • Transaction
      • Config
        • Metadata
        • Timeout
      • Unmanaged
      • With Retry
  • Result (RecordStream)
    • .keys
    • .consume (Summary)
      • .server_info
        • .address
        • .server_agent
        • .protocol_version
      • .database
      • .query, .parameters (won't implement)
      • .query_type
      • .plan
      • .profile
      • .notifications
      • .counters
      • .result_available_after
      • .result_consumed_after
    • .single
    • .into::<EagerResult>()
    • .closed (not sure if needed?)
    • Record
      • most basic functionality
      • ergonomic way to access by key
  • Bookmark Management
  • Protocol Versions
    • 4.4
    • 5.0 (utc fix)
    • 5.1 (re-auth)
    • 5.2 (notification filtering)
    • 5.3 (bolt agent)
    • 5.4 (telemetry)
  • Types
    • Null
    • Integer
    • Float
    • String
    • Boolean
    • Bytes
    • List
    • Map
    • Node
    • Relationship
    • Path
    • Spatial (point)
    • Temporal (date, time, datetime, duration)
  • Proper Unit Tests
  • CI (https://github.com/actions-rust-lang/setup-rust-toolchain ?)
    • rustfmt
    • clippy
    • Unit Tests
    • TestKit

Future Ideas:

Dependencies

~14–47MB
~781K SLoC