horizon-sdk 16.0.0

Canonical Rust data access layer for the Horizon platform
//! Default configuration values and fixed column lists for the Horizon SDK.

/// Top-level columns that `VariantDataRow` requires when serializing to Arrow.
///
/// Mirrors the fields declared in `VariantDataRow::arrow_schema` so a catalog whose
/// schema does not contain them fails at discovery time instead of on first
/// write. Nested paths (e.g. `vector.element`) are intentionally omitted —
/// `FieldIdMap::validate_columns` only checks top-level columns.
pub const DATA_ROW_EXPECTED_COLUMNS: &[&str] = &[
    "created_datetime",
    "data_stream_id",
    "data_type",
    "datetime",
    "modified_datetime",
    "payload_float32",
    "payload_float32_array",
    "payload_float64",
    "payload_float64_array",
    "payload_int",
    "payload_int_array",
    "payload_string",
    "payload_struct",
    "specification_id",
    "variant",
    "vector",
    "vector_end_bound",
    "vector_start_bound",
];
/// Default Kafka bootstrap servers.
pub const DEFAULT_BOOTSTRAP_SERVERS: &str = "localhost:9092";
/// Base URL used when `HorizonApiConfig` omits `base_url`.
pub const DEFAULT_HORIZON_API_BASE_URL: &str = "https://horizon.spear.ai";
/// Timeout used when `HorizonApiConfig` omits `timeout_secs`.
pub const DEFAULT_HORIZON_API_TIMEOUT_SECS: u64 = 30;
/// Default Iceberg REST catalog URI.
pub const DEFAULT_CATALOG_URI: &str = "http://localhost:8181";
/// Default Kafka compression type.
pub const DEFAULT_COMPRESSION_TYPE: &str = "lz4";
/// Default coverage service timeout in seconds.
pub const DEFAULT_COVERAGE_TIMEOUT_SECS: u64 = 30;
/// Default Iceberg data row table name.
pub const DEFAULT_DATA_ROW_TABLE: &str = "horizon.data_row";
/// Default Kafka data row topic name.
pub const DEFAULT_DATA_ROW_TOPIC: &str = "horizon.data_row";
/// Default librdkafka / broker-aligned max produce message size (10 MiB).
///
/// Must stay in sync with Redpanda `kafka_batch_max_bytes` / topic
/// `max.message.bytes`. librdkafka defaults to `1_000_000` and rejects larger
/// payloads locally with `MessageSizeTooLarge` before they reach the broker.
pub const DEFAULT_KAFKA_MESSAGE_MAX_BYTES: &str = "10485760";
/// Default per-message delivery timeout (seconds) for `KafkaProducer::produce`.
pub const DEFAULT_KAFKA_PRODUCE_TIMEOUT_SECS: u64 = 10;
/// Default Iceberg metadata row table name.
pub const DEFAULT_METADATA_ROW_TABLE: &str = "horizon.metadata_row";
/// Default Kafka metadata row topic name.
pub const DEFAULT_METADATA_ROW_TOPIC: &str = "horizon.metadata_row";
/// Default Kafka SASL mechanism.
pub const DEFAULT_SASL_MECHANISM: &str = "SCRAM-SHA-256";
/// Default Kafka security protocol.
pub const DEFAULT_SECURITY_PROTOCOL: &str = "SASL_SSL";
/// Default `PostgreSQL` SSL mode.
pub const DEFAULT_SSLMODE: &str = "require";
/// Top-level columns that `MetadataRow` requires when serializing to Arrow.
///
/// Mirrors the fields declared in `MetadataRow::arrow_schema`.
pub const METADATA_ROW_EXPECTED_COLUMNS: &[&str] = &[
    "altitude",
    "created_datetime",
    "data_stream_id",
    "datetime",
    "heading",
    "latitude",
    "longitude",
    "modified_datetime",
    "pitch",
    "roll",
    "speed",
    "speed_over_ground",
];