Skip to main content

agentic_data/types/
mod.rs

1//! All data types for the AgenticData library.
2
3pub mod error;
4pub mod schema;
5pub mod record;
6pub mod source;
7pub mod lineage;
8pub mod quality;
9pub mod spatial;
10pub mod header;
11
12pub use error::{AdatError, AdatResult};
13pub use schema::{SchemaNode, SchemaEdge, SchemaEdgeType, SchemaField, FieldType, FieldStats, UniversalSchema};
14pub use record::{DataRecord, RecordId, RecordStatus};
15pub use source::{DataSource, SourceId, SourceType};
16pub use lineage::{LineageEntry, LineageChain, LineageAction, TransformReceipt};
17pub use quality::{QualityScore, AnomalyRecord, AnomalyType, HealthMetric, Trend};
18pub use spatial::{GeoPoint, GeoBounds, SpatialRef};
19pub use header::{FileHeader, HEADER_SIZE};
20
21/// Magic bytes at the start of every .adat file.
22pub const ADAT_MAGIC: [u8; 4] = [0x41, 0x44, 0x41, 0x54]; // "ADAT"
23
24/// Current format version.
25pub const FORMAT_VERSION: u32 = 1;
26
27/// Maximum content size per record (before compression): 1MB.
28pub const MAX_CONTENT_SIZE: usize = 1_048_576;
29
30/// Maximum fields per schema.
31pub const MAX_FIELDS_PER_SCHEMA: u16 = 4096;
32
33/// Returns the current time as Unix epoch microseconds.
34pub fn now_micros() -> u64 {
35    chrono::Utc::now().timestamp_micros() as u64
36}