Skip to main content

supertable_core/
lib.rs

1// Core modules
2pub mod action;
3pub mod catalog;
4pub mod cdc;
5pub mod datafusion;
6pub mod delete;
7pub mod manifest;
8pub mod merge;
9pub mod metadata;
10pub mod optimize;
11pub mod partition; // Added
12pub mod polars;
13pub mod scan;
14pub mod schema;
15pub mod statistics;
16pub mod storage;
17pub mod table;
18pub mod transaction;
19pub mod validation;
20
21// I/O modules
22pub mod reader;
23pub mod update;
24pub mod writer;
25
26// Re-exports for convenience
27pub use catalog::{Catalog, CatalogError, CatalogResult, InMemoryCatalog, TableIdentifier};
28pub use manifest::{DataFile, FileFormat, ManifestList, Operation, Snapshot};
29pub use metadata::{MetadataError, TableMetadata};
30pub use partition::{PartitionSpec, Transform}; // Added
31pub use schema::{Field, Schema, Type};
32pub use storage::Storage;
33pub use transaction::{PreparedCommit, RetryConfig, Transaction, TransactionError};
34
35/// Prelude module for convenient imports.
36///
37/// Use `use supercore::prelude::*;` to import commonly used types.
38pub mod prelude {
39    pub use crate::catalog::{
40        Catalog, CatalogError, CatalogResult, InMemoryCatalog, TableIdentifier,
41    };
42    pub use crate::cdc::ChangeDataCapture;
43    pub use crate::manifest::{DataFile, FileFormat, ManifestList, Operation, Snapshot};
44    pub use crate::metadata::{MetadataError, TableMetadata};
45    pub use crate::optimize::{CompactOptions, CompactionScheduler, Optimizer};
46    pub use crate::partition::{PartitionSpec, Transform}; // Added
47    pub use crate::polars::PolarsConnector;
48    pub use crate::schema::{Field, Schema, Type};
49    pub use crate::storage::Storage;
50    pub use crate::transaction::{PreparedCommit, RetryConfig, Transaction, TransactionError};
51}
52
53/// Library version.
54pub const VERSION: &str = env!("CARGO_PKG_VERSION");
55
56/// The current format version.
57pub const FORMAT_VERSION: i32 = 1;
58
59#[cfg(test)]
60mod tests {
61    use super::prelude::*;
62
63    #[test]
64    fn test_prelude_imports() {
65        // Verify that all prelude items are accessible
66        let schema = Schema::builder(0)
67            .with_field(1, "id", Type::Long, true)
68            .build();
69
70        let _spec = PartitionSpec::builder(&schema)
71            .add_identity("id")
72            .unwrap()
73            .build();
74
75        let metadata = TableMetadata::builder("s3://bucket/test", schema).build();
76        assert_eq!(metadata.format_version, crate::FORMAT_VERSION);
77    }
78}