feat(connection): centralize connection type registration

This commit is contained in:
t8y2 committed 2026-08-23 16:38:06 +08:00
1 parent 38664e6aea
commit 0827478078
114 files changed
+5284 -1342

No files matched your search

+1 -35
View File
@@ -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)
}