db app objc refactors

This commit is contained in:
SPRINX0\prochazka
2024-11-20 15:30:47 +01:00
parent 18de37c4e4
commit 788ea70d32
2 changed files with 104 additions and 76 deletions

View File

@@ -38,10 +38,7 @@
}; };
} }
function createMenusCore( interface DbObjMenuItem {
objectTypeField,
driver
): {
label?: string; label?: string;
tab?: string; tab?: string;
forceNewTab?: boolean; forceNewTab?: boolean;
@@ -66,7 +63,10 @@
isDropCollection?: boolean; isDropCollection?: boolean;
isRenameCollection?: boolean; isRenameCollection?: boolean;
isDuplicateCollection?: boolean; isDuplicateCollection?: boolean;
}[] { submenu?: DbObjMenuItem[];
}
function createMenusCore(objectTypeField, driver): DbObjMenuItem[] {
switch (objectTypeField) { switch (objectTypeField) {
case 'tables': case 'tables':
return [ return [
@@ -159,25 +159,30 @@
}, },
createScriptTemplatesSubmenu('tables'), createScriptTemplatesSubmenu('tables'),
{ {
label: 'SQL Generator: CREATE TABLE', label: 'SQL generator',
sqlGeneratorProps: { submenu: [
createTables: true, {
createIndexes: true, label: 'CREATE TABLE',
createForeignKeys: true, sqlGeneratorProps: {
}, createTables: true,
}, createIndexes: true,
{ createForeignKeys: true,
label: 'SQL Generator: DROP TABLE', },
sqlGeneratorProps: { },
dropTables: true, {
dropReferences: true, label: 'DROP TABLE',
}, sqlGeneratorProps: {
}, dropTables: true,
{ dropReferences: true,
label: 'SQL Generator: INSERT', },
sqlGeneratorProps: { },
insert: true, {
}, label: 'INSERT',
sqlGeneratorProps: {
insert: true,
},
},
],
}, },
]; ];
case 'views': case 'views':
@@ -233,16 +238,21 @@
}, },
createScriptTemplatesSubmenu('views'), createScriptTemplatesSubmenu('views'),
{ {
label: 'SQL Generator: CREATE VIEW', label: 'SQL generator',
sqlGeneratorProps: { submenu: [
createViews: true, {
}, label: 'CREATE VIEW',
}, sqlGeneratorProps: {
{ createViews: true,
label: 'SQL Generator: DROP VIEW', },
sqlGeneratorProps: { },
dropViews: true, {
}, label: 'DROP VIEW',
sqlGeneratorProps: {
dropViews: true,
},
},
],
}, },
]; ];
case 'matviews': case 'matviews':
@@ -291,16 +301,21 @@
}, },
createScriptTemplatesSubmenu('matviews'), createScriptTemplatesSubmenu('matviews'),
{ {
label: 'SQL Generator: CREATE MATERIALIZED VIEW', label: 'SQL generator',
sqlGeneratorProps: { submenu: [
createMatviews: true, {
}, label: 'CREATE MATERIALIZED VIEW',
}, sqlGeneratorProps: {
{ createMatviews: true,
label: 'SQL Generator: DROP MATERIALIZED VIEW', },
sqlGeneratorProps: { },
dropMatviews: true, {
}, label: 'DROP MATERIALIZED VIEW',
sqlGeneratorProps: {
dropMatviews: true,
},
},
],
}, },
]; ];
case 'queries': case 'queries':
@@ -329,16 +344,21 @@
}, },
createScriptTemplatesSubmenu('procedures'), createScriptTemplatesSubmenu('procedures'),
{ {
label: 'SQL Generator: CREATE PROCEDURE', label: 'SQL generator',
sqlGeneratorProps: { submenu: [
createProcedures: true, {
}, label: 'CREATE PROCEDURE',
}, sqlGeneratorProps: {
{ createProcedures: true,
label: 'SQL Generator: DROP PROCEDURE', },
sqlGeneratorProps: { },
dropProcedures: true, {
}, label: 'DROP PROCEDURE',
sqlGeneratorProps: {
dropProcedures: true,
},
},
],
}, },
]; ];
case 'functions': case 'functions':
@@ -359,16 +379,21 @@
}, },
createScriptTemplatesSubmenu('functions'), createScriptTemplatesSubmenu('functions'),
{ {
label: 'SQL Generator: CREATE FUNCTION', label: 'SQL generator',
sqlGeneratorProps: { submenu: [
createFunctions: true, {
}, label: 'CREATE FUNCTION',
}, sqlGeneratorProps: {
{ createFunctions: true,
label: 'SQL Generator: DROP FUNCTION', },
sqlGeneratorProps: { },
dropFunctions: true, {
}, label: 'DROP FUNCTION',
sqlGeneratorProps: {
dropFunctions: true,
},
},
],
}, },
]; ];
case 'collections': case 'collections':
@@ -687,7 +712,7 @@
initialData?, initialData?,
icon?, icon?,
appObjectData?, appObjectData?,
preventPreviewMode? tabPreviewMode?
) { ) {
const connection = await getConnectionInfo({ conid }); const connection = await getConnectionInfo({ conid });
const tooltip = `${getConnectionLabel(connection)}\n${database}\n${fullDisplayName({ const tooltip = `${getConnectionLabel(connection)}\n${database}\n${fullDisplayName({
@@ -703,7 +728,7 @@
tabComponent: scriptTemplate ? 'QueryTab' : tabComponent, tabComponent: scriptTemplate ? 'QueryTab' : tabComponent,
appObject: 'DatabaseObjectAppObject', appObject: 'DatabaseObjectAppObject',
appObjectData, appObjectData,
tabPreviewMode: !preventPreviewMode, tabPreviewMode,
props: { props: {
schemaName, schemaName,
pureName, pureName,
@@ -718,10 +743,12 @@
); );
} }
export function handleDatabaseObjectClick(data, forceNewTab = false, preventPreviewMode = false) { export function handleDatabaseObjectClick(data, { forceNewTab = false, tabPreviewMode = false } = {}) {
const { schemaName, pureName, conid, database, objectTypeField } = data; const { schemaName, pureName, conid, database, objectTypeField } = data;
const driver = findEngineDriver(data, getExtensions()); const driver = findEngineDriver(data, getExtensions());
const activeTab = getActiveTab();
const configuredAction = getCurrentSettings()[`defaultAction.dbObjectClick.${objectTypeField}`]; const configuredAction = getCurrentSettings()[`defaultAction.dbObjectClick.${objectTypeField}`];
const overrideMenu = createMenus(objectTypeField, driver).find(x => x.label && x.label == configuredAction); const overrideMenu = createMenus(objectTypeField, driver).find(x => x.label && x.label == configuredAction);
if (overrideMenu) { if (overrideMenu) {
@@ -743,7 +770,7 @@
null, null,
null, null,
data, data,
preventPreviewMode tabPreviewMode
); );
} }
@@ -837,8 +864,8 @@
return createDatabaseObjectMenu(data); return createDatabaseObjectMenu(data);
} }
export function handleObjectClick(data, forceNewTab = false, preventPreviewMode = false) { export function handleObjectClick(data, { forceNewTab = false, tabPreviewMode = false }) {
return handleDatabaseObjectClick(data, forceNewTab, preventPreviewMode); return handleDatabaseObjectClick(data, { forceNewTab, tabPreviewMode });
} }
</script> </script>
@@ -848,6 +875,7 @@
import { import {
currentDatabase, currentDatabase,
extensions, extensions,
getActiveTab,
getCurrentSettings, getCurrentSettings,
getExtensions, getExtensions,
openedConnections, openedConnections,
@@ -886,9 +914,9 @@
export let data; export let data;
export let passProps; export let passProps;
function handleClick(forceNewTab = false, preventPreviewMode = false) { function handleClick({ forceNewTab = false, tabPreviewMode = false } = {}) {
$selectedDatabaseObjectAppObject = data; $selectedDatabaseObjectAppObject = data;
handleDatabaseObjectClick(data, forceNewTab, preventPreviewMode); handleDatabaseObjectClick(data, { forceNewTab, tabPreviewMode });
} }
function createMenu() { function createMenu() {
@@ -922,9 +950,9 @@
onUnpin={isPinned ? () => pinnedTables.update(list => list.filter(x => !testEqual(x, data))) : null} onUnpin={isPinned ? () => pinnedTables.update(list => list.filter(x => !testEqual(x, data))) : null}
extInfo={getExtInfo(data)} extInfo={getExtInfo(data)}
isChoosed={matchDatabaseObjectAppObject($selectedDatabaseObjectAppObject, data)} isChoosed={matchDatabaseObjectAppObject($selectedDatabaseObjectAppObject, data)}
on:click={() => handleClick()} on:click={() => handleClick({ tabPreviewMode: true })}
on:middleclick={() => handleClick(true)} on:middleclick={() => handleClick({ forceNewTab: true })}
on:dblclick={() => handleClick(false, true)} on:dblclick={() => handleClick({})}
on:expand on:expand
on:dragstart on:dragstart
on:dragenter on:dragenter

View File

@@ -16,7 +16,7 @@
const index = _.findIndex(list, x => selectedObjectMatcher(x, selected)); const index = _.findIndex(list, x => selectedObjectMatcher(x, selected));
if (index >= 0 && list[index + diff]) { if (index >= 0 && list[index + diff]) {
selectedObjectStore.set(list[index + diff]); selectedObjectStore.set(list[index + diff]);
module.handleObjectClick(list[index + diff]); module.handleObjectClick(list[index + diff], { tabPreviewMode: true });
} }
} }
if (ev.keyCode == keycodes.upArrow) { if (ev.keyCode == keycodes.upArrow) {