mirror of
https://github.com/t8y2/dbx.git
synced 2026-10-26 00:00:51 +00:00
52 lines
1.8 KiB
TypeScript
52 lines
1.8 KiB
TypeScript
import type { ObjectInfo, TreeNode } from "@/types/database";
|
|
import { sortSidebarNames } from "@/lib/databaseTree";
|
|
import { buildGroupedObjectTreeNodes, buildObjectGroupPlaceholderNodes, buildSimpleObjectTreeNodes, type DatabaseObjectTreeKind } from "@/lib/tableTree";
|
|
|
|
export const SQLSERVER_DEFAULT_SCHEMA = "dbo";
|
|
|
|
function isDefaultSchema(schema: string): boolean {
|
|
return schema.toLowerCase() === SQLSERVER_DEFAULT_SCHEMA;
|
|
}
|
|
|
|
export function buildSqlServerDatabaseTreeNodes(connectionId: string, database: string, schemas: string[], defaultSchemaObjects: ObjectInfo[], options: { lazyObjectTypes?: DatabaseObjectTreeKind[]; simpleObjectDisplay?: boolean } = {}): TreeNode[] {
|
|
const databaseNodeId = `${connectionId}:${database}`;
|
|
const defaultSchema = schemas.find(isDefaultSchema) || SQLSERVER_DEFAULT_SCHEMA;
|
|
|
|
const defaultObjectNodes = options.lazyObjectTypes
|
|
? buildObjectGroupPlaceholderNodes({
|
|
nodeId: databaseNodeId,
|
|
connectionId,
|
|
database,
|
|
schema: defaultSchema,
|
|
objectTypes: options.lazyObjectTypes,
|
|
})
|
|
: options.simpleObjectDisplay
|
|
? buildSimpleObjectTreeNodes({
|
|
nodeId: databaseNodeId,
|
|
connectionId,
|
|
database,
|
|
schema: defaultSchema,
|
|
objects: defaultSchemaObjects,
|
|
})
|
|
: buildGroupedObjectTreeNodes({
|
|
nodeId: databaseNodeId,
|
|
connectionId,
|
|
database,
|
|
schema: defaultSchema,
|
|
objects: defaultSchemaObjects,
|
|
});
|
|
|
|
const schemaNodes = sortSidebarNames(schemas.filter((schema) => !isDefaultSchema(schema))).map((schema) => ({
|
|
id: `${databaseNodeId}:${schema}`,
|
|
label: schema,
|
|
type: "schema" as const,
|
|
connectionId,
|
|
database,
|
|
schema,
|
|
isExpanded: false,
|
|
children: [],
|
|
}));
|
|
|
|
return [...defaultObjectNodes, ...schemaNodes];
|
|
}
|