crates/graphar-falkordb/Cargo.toml
[package]
name = "graphar-falkordb"
description = "Bulk-insert Apache Arrow RecordBatches into FalkorDB (Redis/Valkey)"
version.workspace = true
edition.workspace = true
authors.workspace = true
license.workspace = true
repository.workspace = true
# Development notes, agent instructions and machine-local tooling stay in the
# repository; they are not part of the published crate.
exclude = [
".nornir/",
]
[features]
default = []
# FalkorDB autostart — `falkordb_container` brings up a FalkorDB container from
# Rust (testcontainers → Podman, LAW 7) so callers can just-work against a fresh
# DB. Pulls testcontainers/Podman, so it's opt-in (off by default; the lean/wasm
# build stays free of it). `tokio/time` is needed for the module ready-wait.
autostart = ["dep:testcontainers", "tokio/time"]
# `testmatrix` — emit the UNWIND-batched Cypher loader's health (vertex + edge
# bulk inserts) into the nornir test-matrix via `functional_status`. OFF BY
# DEFAULT: a compiled-out `#[inline]` no-op with no nornir dep. Turn on with
# `--features testmatrix` (pulls nornir-testmatrix's own `testmatrix` mode).
testmatrix = ["dep:nornir-testmatrix", "nornir-testmatrix/testmatrix"]
[dependencies]
# Introspection-marker emitter — only compiled with `testmatrix`. Path (the
# workspace `[patch.crates-io]` also resolves it) to the local nornir-testmatrix
# 0.2, which carries the `functional_status` emitter + the `testmatrix` gate.
nornir-testmatrix = { version = "0.2", default-features = false, optional = true }
graphar = { path = "../graphar" , version = "0.3.0" }
arrow = { workspace = true }
arrow-array = { workspace = true }
arrow-schema = { workspace = true }
# Fan the per-blob GRAPH.BULK encode across cores (one gatling unit per chunk).
# LAW #0: concurrency → gatling (znippy-zoomies), NEVER rayon/thread::spawn.
znippy-zoomies = { version = "0.1.20" }
# `tls-rustls` + `tokio-rustls-comp`: the `rediss://` path with a client identity (src/tls.rs),
# the same two features graphar-flight has always turned on, so the lock gains nothing new.
redis = { workspace = true, features = ["tls-rustls", "tokio-rustls-comp"] }
# Only to install a process-wide CryptoProvider before the first mTLS handshake - see
# src/tls.rs. ring, the provider korp already pins; both are in the lock already.
rustls = { version = "0.23", default-features = false, features = ["ring"] }
tokio = { workspace = true }
thiserror = { workspace = true }
# Concurrent in-flight dispatch of the UNWIND-CREATE queries over the (Clone)
# multiplexed connection rides `znippy_zoomies::gatling::io::run` (see
# znippy-zoomies above); `anyhow` is that engine's error currency — job errors
# round-trip through it and downcast back to the original `FalkorError`.
anyhow = { workspace = true }
# Only with `autostart`: the container bring-up driver (also a dev-dep below so
# the existing `--ignored` integration tests build without the feature).
testcontainers = { version = "0.27", optional = true }
[dev-dependencies]
# `integration_falkordb` is `#![cfg(feature = "autostart")]` and drives the
# container only through `falkordb_container` (the optional `testcontainers`
# dep above), so no separate dev-dep is needed for it.
tempfile = "3"
tokio = { workspace = true }
# Tests drive `buffered_dispatch` on a plain `futures` executor (no reactor).
futures = { workspace = true }