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.5.0"
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.5.0")]
34
35pub mod core;
36pub mod engine;
37pub mod json;
38pub mod materializer;
39pub mod measure;
40pub mod scan;
41pub mod testing;
42
43// --- Public API (stable surface for library users) ---------------------------
44
45pub use core::{
46    model_has_test_contract, parse_select_spec, resolve_scan_path, scan_path_exists,
47    BronzeCheckMode, BronzeDiagnostic, BronzeValidationReport, ColumnMeta, DependencyRef,
48    DiagnosticSeverity, IcebergConfig, IcebergWriteMode, Materialization, MaterializeConfig,
49    MaterializeMode, ModelDag, ModelLayer, ModelNode, ModelTests, OutputFormat, PathGlobSet,
50    RbtProjectConfig, RbtTemplateEngine, RefBackend, RefStrategy, ScanConfig, SelectMode,
51    SelectToken, SourceFormat, SqlModelParser, StagingFrontmatter, DEFAULT_MAX_ROW_GROUP_BYTES,
52    DEFAULT_MAX_ROW_GROUP_ROWS, DEFAULT_MEMTABLE_MAX_ROWS, DEFAULT_PROTOBUF_MAX_PAYLOAD_BYTES,
53};
54
55pub use engine::{
56    register_bronze_for_model, register_bronze_sources_for_dag, BronzeRegistrationMode,
57    BronzeSourceMeta, BronzeTableProvider, DagExecutionSummary, PreviewResult, RbtEngineBuilder,
58    TransformationEngine,
59};
60pub use engine::udf::{register_builtin_udfs, register_scalar_udf, BUILTIN_UDF_NAMES};
61
62pub use materializer::{
63    clear_incremental_parts, incremental_ref_path, materialize_incremental_append_stream,
64    materialize_stream, new_wap_run_id, sibling_iceberg_dir, verify_iceberg_catalog_table,
65    wap_publish, write_iceberg_catalog_batches, write_iceberg_fs_table, write_parquet_stream,
66    IcebergCatalogOptions, IcebergCatalogWriteStats, MaterializeWriteOptions, MultiFormatWriter,
67    StreamWriteStats, WapAuditLog, WapMaterializer, WapModelPaths, WapPhase, WapStatus,
68};
69pub use measure::{
70    default_report_path, list_scenarios, run_measure_scenario, write_measure_report, MeasureReport,
71    SCENARIO_INCREMENTAL_APPEND, SCENARIO_SMOKE_PIPELINE, SCENARIO_VALIDATE_DX,
72};
73
74pub use json::{JShiftExtractor, JsonExtractSpec};
75pub use scan::{parse_hive_partitions, LakeScanner, ScanRequest};
76
77pub use testing::{
78    assertions_from_model_tests, Assertion, RecordBatchValidator, StreamingAssertionRunner,
79    UniqueKeyTracker, ValidationResult,
80};
81
82/// Package version string.
83pub const VERSION: &str = env!("CARGO_PKG_VERSION");