feat(xugu): expose private synonyms in schema tree

This commit is contained in:
Elias authored and GitHub committed 2026-07-30 00:43:10 +08:00
1 parent ffde91499a
commit 1774126f76
24 files changed
+321 -24

No files matched your search

@@ -180,9 +180,9 @@ watch(deferredSearchQuery, (newQuery, oldQuery) => {
.catch(() => {});
});
const searchableObjectGroupTypes = new Set<TreeNodeType>(["group-tables", "group-views", "group-materialized-views", "group-procedures", "group-functions", "group-triggers", "group-sequences", "group-packages", "group-types"]);
const searchableObjectGroupTypes = new Set<TreeNodeType>(["group-tables", "group-views", "group-materialized-views", "group-procedures", "group-functions", "group-triggers", "group-sequences", "group-synonyms", "group-packages", "group-types"]);
const simpleObjectParentTypes = new Set<TreeNodeType>(["database", "schema", "linked-server-schema"]);
const simpleObjectChildTypes = new Set<TreeNodeType>(["table", "view", "materialized_view", "procedure", "function", "trigger", "sequence", "package", "package-body", "type", "type-body", "load-more"]);
const simpleObjectChildTypes = new Set<TreeNodeType>(["table", "view", "materialized_view", "procedure", "function", "trigger", "sequence", "synonym", "package", "package-body", "type", "type-body", "load-more"]);
function isSimpleObjectSearchParent(node: TreeNode): boolean {
return settingsStore.editorSettings.sidebarObjectDisplay === "simple" && simpleObjectParentTypes.has(node.type) && node.isExpanded === true && (!!node.children?.some((child) => simpleObjectChildTypes.has(child.type)) || !!store.sidebarTableSearchQueries[node.id]?.trim());
@@ -492,6 +492,7 @@ const groupTypes: Set<TreeNodeType> = new Set([
"group-procedures",
"group-functions",
"group-sequences",
"group-synonyms",
"group-packages",
"group-types",
"group-partitions",
@@ -14,6 +14,7 @@ import {
TableProperties,
Key,
Link,
Link2,
Zap,
ListTree,
FileCode,
@@ -277,6 +278,8 @@ function getIconInfo(node: TreeNode): { icon: any; colorClass: string } | null {
return { icon: Braces, colorClass: "text-amber-500" };
case "sequence":
return { icon: ListTree, colorClass: "text-emerald-500" };
case "synonym":
return { icon: Link2, colorClass: "text-sky-500" };
case "package":
return { icon: Package, colorClass: "text-cyan-500" };
case "package-body":
@@ -297,6 +300,8 @@ function getIconInfo(node: TreeNode): { icon: any; colorClass: string } | null {
return { icon: Braces, colorClass: "text-amber-500" };
case "group-sequences":
return { icon: ListTree, colorClass: "text-emerald-500" };
case "group-synonyms":
return { icon: Link2, colorClass: "text-sky-500" };
case "group-packages":
return { icon: Package, colorClass: "text-cyan-500" };
case "group-types":
@@ -1178,7 +1183,15 @@ function onKeydown(event: KeyboardEvent) {
<ProductionContextBadge v-if="showProductionBadge" compact />
<span
v-if="
(node.type === 'group-tables' || node.type === 'group-views' || node.type === 'group-materialized-views' || node.type === 'group-procedures' || node.type === 'group-functions' || node.type === 'group-sequences' || node.type === 'group-packages' || node.type === 'group-partitions') &&
(node.type === 'group-tables' ||
node.type === 'group-views' ||
node.type === 'group-materialized-views' ||
node.type === 'group-procedures' ||
node.type === 'group-functions' ||
node.type === 'group-sequences' ||
node.type === 'group-synonyms' ||
node.type === 'group-packages' ||
node.type === 'group-partitions') &&
node.objectCount != null
"
class="text-muted-foreground text-[10px] shrink-0"