Skip to main content

rbt/
lib.rs

1//! # rbt
2//!
3//! Medallion SQL DAG engine for lakehouse transforms (bronze → silver → gold).
4//!
5//! ## Install
6//!
7//! **CLI**
8//! ```bash
9//! cargo install rbt-datalake
10//! rbt --help
11//! ```
12//!
13//! **Library**
14//! ```toml
15//! [dependencies]
16//! rbt-datalake = "0.3.8"
17//! ```
18//!
19//! ## Quick start (library)
20//!
21//! ```rust,no_run
22//! use rbt::{RbtProjectConfig, TransformationEngine};
23//! # async fn demo() -> anyhow::Result<()> {
24//! let project = std::path::Path::new(".");
25//! let config = RbtProjectConfig::load(project)?;
26//! let dag = config.build_dag(project, None)?;
27//! let engine = TransformationEngine::new();
28//! let _summary = engine.execute_dag(&dag, project, "./target/output").await?;
29//! # Ok(())
30//! # }
31//! ```
32
33#![doc(html_root_url = "https://docs.rs/rbt-datalake/0.3.8")]
34
35pub mod core;
36pub mod engine;
37pub mod json;
38pub mod materializer;
39pub mod scan;
40pub mod testing;
41
42// --- Public API (stable surface for library users) ---------------------------
43
44pub use core::{
45    model_has_test_contract, parse_select_spec, resolve_scan_path, scan_path_exists,
46    BronzeCheckMode, BronzeDiagnostic, BronzeValidationReport, ColumnMeta, DependencyRef,
47    DiagnosticSeverity, Materialization, MaterializeConfig, MaterializeMode, ModelDag, ModelLayer,
48    ModelNode, ModelTests, OutputFormat, PathGlobSet, RbtProjectConfig, RbtTemplateEngine,
49    RefBackend, RefStrategy, ScanConfig, SelectMode, SelectToken, SourceFormat, SqlModelParser,
50    StagingFrontmatter, DEFAULT_MAX_ROW_GROUP_BYTES, DEFAULT_MAX_ROW_GROUP_ROWS,
51    DEFAULT_MEMTABLE_MAX_ROWS, DEFAULT_PROTOBUF_MAX_PAYLOAD_BYTES,
52};
53
54pub use engine::{
55    register_bronze_for_model, register_bronze_sources_for_dag, BronzeRegistrationMode,
56    BronzeSourceMeta, BronzeTableProvider, DagExecutionSummary, RbtEngineBuilder,
57    TransformationEngine,
58};
59
60pub use materializer::{
61    materialize_stream, sibling_iceberg_dir, write_iceberg_fs_table, write_parquet_stream,
62    MaterializeWriteOptions, MultiFormatWriter, StreamWriteStats, WapMaterializer, WapStatus,
63};
64
65pub use json::{JShiftExtractor, JsonExtractSpec};
66pub use scan::{parse_hive_partitions, LakeScanner, ScanRequest};
67
68pub use testing::{
69    assertions_from_model_tests, Assertion, RecordBatchValidator, StreamingAssertionRunner,
70    UniqueKeyTracker, ValidationResult,
71};
72
73/// Package version string.
74pub const VERSION: &str = env!("CARGO_PKG_VERSION");