closure-tree (Rust)
A SeaORM-friendly port of Ruby's closure_tree.
Status
Early preview (0.0.1). PostgreSQL only. Contributions welcome.
Quickstart
[]
= "0.0.1"
use ClosureTreeRepository;
use ClosureTreeModelDerive as ClosureTreeModel;
use *;
async
Features
- Derive macro for SeaORM models (
#[derive(ClosureTreeModel)]). - Repository helpers (
parent,descendants,find_by_path,find_or_create_by_path, etc.). - Advisory locks via
pg_advisory_lock, rebuild utilities. - Integration test against a Docker Postgres instance.
Limitations
- PostgreSQL only.
- Ordering,
hash_tree, dependent strategies, and some Ruby APIs are not yet ported. - Advisory lock is limited to Postgres advisory locks; no MySQL adapter yet.
Development
cargo fmt
cargo clippy --all-targets -- -D warnings
cargo test
Requires Docker Postgres at postgres://closure_tree:closure_tree_pass@localhost:5434/closure_tree_test (see tests/postgres.rs).