Files
dbx/crates/dbx-core/src/database_capabilities.rs
T

58 lines
2.1 KiB
Rust

use crate::models::connection::DatabaseType;
pub fn agent_key(db_type: &DatabaseType, driver_profile: Option<&str>) -> Option<&'static str> {
match db_type {
DatabaseType::Dameng => Some("dameng"),
DatabaseType::Kingbase => Some("kingbase"),
DatabaseType::Highgo => Some("highgo"),
DatabaseType::Vastbase => Some("vastbase"),
DatabaseType::Goldendb => Some("goldendb"),
DatabaseType::Oracle => match driver_profile {
Some("oracle-10g") => Some("oracle-10g"),
_ => Some("oracle"),
},
DatabaseType::H2 => Some("h2"),
DatabaseType::Snowflake => Some("snowflake"),
DatabaseType::Trino => Some("trino"),
DatabaseType::Hive => Some("hive"),
DatabaseType::Db2 => Some("db2"),
DatabaseType::Informix => Some("informix"),
DatabaseType::Neo4j => Some("neo4j"),
DatabaseType::Cassandra => Some("cassandra"),
DatabaseType::Bigquery => Some("bigquery"),
DatabaseType::Kylin => Some("kylin"),
DatabaseType::Sundb => Some("sundb"),
DatabaseType::Gaussdb => Some("gaussdb"),
DatabaseType::MongoDb => Some("mongodb"),
DatabaseType::Tdengine => Some("tdengine"),
_ => None,
}
}
pub fn is_agent_type(db_type: &DatabaseType) -> bool {
agent_key(db_type, None).is_some()
}
pub fn is_single_connection_pool(db_type: &DatabaseType) -> bool {
matches!(
db_type,
DatabaseType::Sqlite
| DatabaseType::DuckDb
| DatabaseType::Oracle
| DatabaseType::Dameng
| DatabaseType::Kingbase
| DatabaseType::Highgo
| DatabaseType::Vastbase
| DatabaseType::Goldendb
| DatabaseType::Jdbc
)
}
pub fn is_metadata_connection_scoped(db_type: &DatabaseType) -> bool {
matches!(db_type, DatabaseType::Mysql | DatabaseType::Doris | DatabaseType::StarRocks)
}
pub fn skips_tcp_probe(db_type: &DatabaseType) -> bool {
matches!(db_type, DatabaseType::Sqlite | DatabaseType::DuckDb | DatabaseType::Jdbc) || is_agent_type(db_type)
}