113 lines
3.7 KiB
JavaScript
113 lines
3.7 KiB
JavaScript
import fs from "node:fs";
|
|
|
|
const extraAliases = {
|
|
mysql: [
|
|
"mariadb",
|
|
"percona",
|
|
"tidb",
|
|
"greatsql",
|
|
"oceanbase mysql",
|
|
"oceanbase mysql mode",
|
|
"oceanbase mysql 模式",
|
|
"tdsql mysql",
|
|
"tdsql-mysql",
|
|
"polardb mysql",
|
|
"polardb for mysql",
|
|
"polardb-x",
|
|
"polardbx",
|
|
],
|
|
postgres: [
|
|
"postgresql",
|
|
"postgres",
|
|
"pgsql",
|
|
"pg",
|
|
"hologres",
|
|
"cloudberry",
|
|
"apache cloudberry",
|
|
"cockroachdb",
|
|
"cockroach db",
|
|
"polardb postgresql",
|
|
"polardb for postgresql",
|
|
"polardb postgres",
|
|
"polardb for postgres",
|
|
],
|
|
sqlite: ["sqlite3", "sql lite"],
|
|
clickhouse: ["click house", "ch"],
|
|
sqlserver: ["sql server", "mssql", "microsoft sql server", "sqlservice"],
|
|
mongodb: ["mongo", "mongodb"],
|
|
oracle: ["oracle database"],
|
|
elasticsearch: ["elastic search"],
|
|
chromadb: ["chroma"],
|
|
doris: ["selectdb"],
|
|
manticoresearch: ["manticore"],
|
|
dameng: ["dm8", "dameng", "达梦"],
|
|
kingbase: ["kingbasees", "kingbase", "人大金仓", "金仓"],
|
|
highgo: ["瀚高"],
|
|
yashandb: ["yashan", "崖山"],
|
|
saphana: ["hana", "sap hana"],
|
|
opengauss: ["open gauss"],
|
|
"oceanbase-oracle": ["oceanbase oracle", "oceanbase oracle mode", "oceanbase oracle 模式"],
|
|
gbase: ["gbase 8a", "gbase8a", "gbase 8s", "gbase8s"],
|
|
access: ["microsoft access", "ms access"],
|
|
vastbase: ["vastbase g", "vastbaseg"],
|
|
prestosql: ["presto", "presto sql"],
|
|
hive: ["apache hive"],
|
|
db2: ["ibm db2"],
|
|
informix: ["ibm informix"],
|
|
bigquery: ["google bigquery"],
|
|
kylin: ["apache kylin"],
|
|
oscar: ["shentong", "oscar", "神通"],
|
|
xugu: ["xugudb", "xugu", "虚谷"],
|
|
zookeeper: ["zoo keeper", "apache zookeeper"],
|
|
mq: ["message queue", "pulsar", "kafka", "rabbitmq", "rocketmq"],
|
|
iotdb: ["apache iotdb"],
|
|
iris: ["intersystems iris", "intersystems cache", "intersystems caché", "cache", "caché", "ensemble"],
|
|
jdbc: ["dremio", "jdbcx"],
|
|
spark: ["apache spark"],
|
|
};
|
|
|
|
const supplementalDrivers = [
|
|
{ dbType: "turso", label: "Turso", aliases: ["libsql", "lib sql"] },
|
|
{ dbType: "nacos", label: "Nacos", aliases: ["r-nacos", "rnacos"] },
|
|
{ dbType: "cloudberry", label: "Apache Cloudberry" },
|
|
{ dbType: "mariadb", label: "MariaDB" },
|
|
{ dbType: "tidb", label: "TiDB" },
|
|
{ dbType: "oceanbase", label: "OceanBase" },
|
|
{ dbType: "tdsql", label: "TDSQL" },
|
|
{ dbType: "polardb", label: "PolarDB", aliases: ["polardb-x", "polardbx"] },
|
|
{ dbType: "greatsql", label: "GreatSQL" },
|
|
{ dbType: "selectdb", label: "SelectDB" },
|
|
{ dbType: "cockroachdb", label: "CockroachDB", aliases: ["cockroach db"] },
|
|
{ dbType: "dremio", label: "Dremio" },
|
|
{ dbType: "jdbcx", label: "JDBCX" },
|
|
{ dbType: "pulsar", label: "Apache Pulsar" },
|
|
{ dbType: "kafka", label: "Apache Kafka" },
|
|
{ dbType: "rocketmq", label: "Apache RocketMQ" },
|
|
{ dbType: "rabbitmq", label: "RabbitMQ" },
|
|
{ dbType: "mqtt", label: "MQTT", aliases: ["emqx", "hivemq", "mosquitto"] },
|
|
];
|
|
|
|
const manifestUrl = new URL("../../crates/dbx-core/assets/database-drivers.manifest.json", import.meta.url);
|
|
const manifest = JSON.parse(fs.readFileSync(manifestUrl, "utf8"));
|
|
const catalogEntries = [...manifest.drivers, ...supplementalDrivers];
|
|
const duplicateDbTypes = catalogEntries
|
|
.map((driver) => driver.dbType)
|
|
.filter((dbType, index, values) => values.indexOf(dbType) !== index);
|
|
|
|
if (duplicateDbTypes.length > 0) {
|
|
throw new Error(`Duplicate database issue catalog entries: ${[...new Set(duplicateDbTypes)].join(", ")}`);
|
|
}
|
|
|
|
export const databaseIssueDrivers = catalogEntries.map((driver) => ({
|
|
dbType: driver.dbType,
|
|
label: driver.label,
|
|
aliases: [
|
|
...new Set([
|
|
driver.dbType,
|
|
driver.label,
|
|
...(driver.aliases || []),
|
|
...(extraAliases[driver.dbType] || []),
|
|
]),
|
|
],
|
|
}));
|