fix(export): show all dameng databases in export dropdown
This commit is contained in:
10 files changed
+143
-33
No files matched your search
@@ -2,6 +2,7 @@ import type { DatabaseType, QueryResult } from "@/types/database.ts";
|
||||
import * as api from "@/lib/backend/api.ts";
|
||||
import { buildTableSelectSql } from "@/lib/table/tableSelectSql.ts";
|
||||
import { uuid } from "@/lib/common/utils.ts";
|
||||
import { SINGLE_DATABASE_TYPES } from "@/lib/database/databaseCapabilitySets";
|
||||
|
||||
export const DATABASE_EXPORT_ROW_LIMIT = 10_000;
|
||||
export const DATABASE_EXPORT_PAGE_SIZE = 500;
|
||||
@@ -58,6 +59,10 @@ export interface AllDatabaseExportPlanInput {
|
||||
databases: string[];
|
||||
schemaAware: boolean;
|
||||
schemasByDatabase?: Record<string, string[]>;
|
||||
/** 数据库类型,用于判断是否为单数据库架构(如达梦、Oracle)。
|
||||
* 对于这类数据库,选中的"数据库"实际上就是 schema 本身,
|
||||
* 不应再对每个"数据库"展开所有 schema 做笛卡尔积。 */
|
||||
dbType?: DatabaseType;
|
||||
}
|
||||
|
||||
export interface AllDatabaseExportPlanItem {
|
||||
@@ -130,6 +135,19 @@ export async function runWithDatabaseBackupSnapshot<T>(options: DatabaseBackupSn
|
||||
}
|
||||
|
||||
export function buildAllDatabaseExportPlan(options: AllDatabaseExportPlanInput): AllDatabaseExportPlanItem[] {
|
||||
// 对于 schema-aware 的单库类型(达梦、Oracle、OceanBase-Oracle 等),选中的"数据库"
|
||||
// 实际上就是 schema 本身,不应再展开所有 schema 做笛卡尔积,直接将选中项作为 schema 导出。
|
||||
// firebird/questdb/access 等单库但非 schema-aware 类型必须走 flatMap 保留真实 database,
|
||||
// 否则 database:"" 会覆盖后端 db_config.database 破坏连接。
|
||||
const singleDatabase = options.dbType ? SINGLE_DATABASE_TYPES.has(options.dbType) : false;
|
||||
if (singleDatabase && options.schemaAware) {
|
||||
return options.databases.map((schema) => ({
|
||||
database: "",
|
||||
schema,
|
||||
fileStem: schema,
|
||||
displayName: schema,
|
||||
}));
|
||||
}
|
||||
return options.databases.flatMap((database) => {
|
||||
const schemas = options.schemaAware ? (options.schemasByDatabase?.[database] ?? []).filter((schema) => schema.trim()) : [database];
|
||||
const exportSchemas = schemas.length > 0 ? schemas : [database];
|
||||
|
||||
Reference in new issue
Block a user