Files
t8y2--dbx/.github/scripts/database-issue-catalog.mjs

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] || []),
]),
],
}));