1pub mod embedding;
20pub mod error;
21pub mod nl2sql;
22pub mod rag;
23pub mod safety;
24pub mod sql_sanitizer;
25pub mod vector;
26
27pub use embedding::*;
28pub use error::AiError;
29pub use nl2sql::*;
30pub use rag::*;
31pub use safety::*;
32pub use sql_sanitizer::SqlSanitizer;
33pub use vector::*;
34
35#[cfg(feature = "real")]
37pub mod real_embedding;
38#[cfg(feature = "real")]
39pub use real_embedding::OpenAIEmbeddingClient;
40
41#[cfg(feature = "llm-optimizer")]
43pub mod explain_parser;
44#[cfg(feature = "llm-optimizer")]
45pub mod query_plan_optimizer;
46#[cfg(feature = "llm-optimizer")]
47pub use explain_parser::{
48 ExplainPlanParser, ExplainSignal, MssqlExplainParser, MySqlExplainParser, OracleExplainParser,
49 PgExplainParser, SqliteExplainParser,
50};
51#[cfg(feature = "llm-optimizer")]
52pub use query_plan_optimizer::{
53 HintSource, OptimizerConfig, UnifiedOptimizationHint, UnifiedQueryAnalysis,
54 UnifiedQueryOptimizer,
55};
56
57#[cfg(any(
60 feature = "ai-nl2sql-enhanced",
61 feature = "ai-index-advisor",
62 feature = "ai-rewrite-advisor"
63))]
64pub mod advice_common;
65#[cfg(any(
66 feature = "ai-nl2sql-enhanced",
67 feature = "ai-index-advisor",
68 feature = "ai-rewrite-advisor"
69))]
70pub use advice_common::{AdviceSource, AdviceType, AiAdviceAuditRecord, BenefitEstimate};
71
72#[cfg(feature = "ai-nl2sql-enhanced")]
74pub mod intent_analysis;
75#[cfg(feature = "ai-nl2sql-enhanced")]
76pub use intent_analysis::{
77 IntentAnalysisResult, IntentAnalyzer, IntentError, OrderDirection, OrderField, Pagination,
78 ParameterizedCondition, QueryIntent, RiskLevel,
79};
80
81#[cfg(feature = "ai-index-advisor")]
83pub mod index_advisor;
84#[cfg(feature = "ai-index-advisor")]
85pub use index_advisor::{
86 IndexAdvisor, IndexError, IndexSuggestion, IndexType, QueryPattern, SlowQueryLog,
87};
88
89#[cfg(feature = "ai-rewrite-advisor")]
91pub mod rewrite_advisor;
92#[cfg(feature = "ai-rewrite-advisor")]
93pub use rewrite_advisor::{
94 EquivalenceProof, RewriteAdvisor, RewriteError, RewriteSuggestion, TransformType,
95};