feat(connection): centralize connection type registration
This commit is contained in:
114 files changed
+5284
-1342
No files matched your search
@@ -19,41 +19,7 @@ pub enum DialectKind {
|
||||
|
||||
impl DialectKind {
|
||||
pub fn from_database_type(db_type: DatabaseType) -> Self {
|
||||
match db_type {
|
||||
DatabaseType::Mysql
|
||||
| DatabaseType::Doris
|
||||
| DatabaseType::StarRocks
|
||||
| DatabaseType::Goldendb
|
||||
| DatabaseType::Sundb
|
||||
| DatabaseType::Databend
|
||||
| DatabaseType::Gbase => DialectKind::Mysql,
|
||||
DatabaseType::Postgres
|
||||
| DatabaseType::Gaussdb
|
||||
| DatabaseType::Kwdb
|
||||
| DatabaseType::OpenGauss
|
||||
| DatabaseType::Highgo
|
||||
| DatabaseType::Vastbase
|
||||
| DatabaseType::Kingbase
|
||||
| DatabaseType::Firebird
|
||||
| DatabaseType::Redshift
|
||||
| DatabaseType::Vertica
|
||||
| DatabaseType::Exasol => DialectKind::Postgres,
|
||||
DatabaseType::Sqlite | DatabaseType::Rqlite | DatabaseType::Turso => DialectKind::Sqlite,
|
||||
DatabaseType::DuckDb => DialectKind::DuckDb,
|
||||
DatabaseType::SqlServer | DatabaseType::Access => DialectKind::SqlServer,
|
||||
DatabaseType::Oracle
|
||||
| DatabaseType::Dameng
|
||||
| DatabaseType::OceanbaseOracle
|
||||
| DatabaseType::Iris
|
||||
| DatabaseType::Yashandb
|
||||
| DatabaseType::Xugu => DialectKind::Oracle,
|
||||
DatabaseType::H2 => DialectKind::H2,
|
||||
DatabaseType::ClickHouse => DialectKind::ClickHouse,
|
||||
DatabaseType::ManticoreSearch => DialectKind::ManticoreSearch,
|
||||
DatabaseType::Informix => DialectKind::Informix,
|
||||
DatabaseType::Questdb => DialectKind::Questdb,
|
||||
_ => DialectKind::Unsupported,
|
||||
}
|
||||
crate::database_manifest::dialect_name(&db_type).and_then(Self::from_label).unwrap_or(DialectKind::Unsupported)
|
||||
}
|
||||
|
||||
pub fn to_database_type(self) -> Option<DatabaseType> {
|
||||
|
||||
@@ -77,9 +77,14 @@ impl DialectRegistry {
|
||||
&self,
|
||||
db_type: crate::models::connection::DatabaseType,
|
||||
) -> Option<DialectCapabilityDescriptor> {
|
||||
if let Some(dialect_name) = crate::database_manifest::dialect_name(&db_type) {
|
||||
if let Some(loaded) = self.get(dialect_name) {
|
||||
return Some(loaded.descriptor);
|
||||
}
|
||||
}
|
||||
let kind = DialectKind::from_database_type(db_type);
|
||||
let label = kind.label();
|
||||
let db_name = format!("{db_type:?}").to_ascii_lowercase();
|
||||
let db_name = db_type.as_str();
|
||||
self.get(&db_name).or_else(|| self.get(label)).map(|ld| ld.descriptor)
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user