use api::pipelines::PipelineDefinition;
use moka::future::Cache;
use reqwest::Client;
use serde_json::Value;
use std::collections::HashMap;
use crate::drivers::postgresql::sqlx_driver::PostgresClientRegistry;
use sqlx::postgres::PgPool;
use std::sync::Arc;
pub mod api;
pub mod client;
pub mod config;
pub mod daemon;
pub mod data;
pub mod drivers;
pub mod error;
pub mod parser;
pub mod proxy_request;
pub mod bootstrap;
pub mod cli;
pub mod router;
pub mod wss;
#[cfg(feature = "cdc")]
pub mod cdc;
pub struct AppState {
pub cache: Arc<Cache<String, Value>>,
pub immortal_cache: Arc<Cache<String, Value>>,
pub client: Client,
pub pg_registry: Arc<PostgresClientRegistry>,
pub jdbc_pool_cache: Arc<moka::future::Cache<String, PgPool>>,
pub gateway_force_camel_case_to_snake_case: bool,
pub pipeline_registry: Option<Arc<HashMap<String, PipelineDefinition>>>,
pub logging_client_name: Option<String>,
pub gateway_auth_client_name: Option<String>,
pub prometheus_metrics_enabled: bool,
}
pub struct ImmortalCache {
pub cache: Arc<Cache<String, Value>>,
}
pub mod utils;
pub use client::AthenaClient;
pub use client::backend::BackendType;
pub use client::builder::AthenaClientBuilder;