mirror of
https://github.com/DeNNiiInc/dbgate.git
synced 2026-04-29 06:26:00 +00:00
db app objc refactors
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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) {
|
||||||
|
|||||||
Reference in New Issue
Block a user