SYNC: open db chat ctx menu

This commit is contained in:
SPRINX0\prochazka
2025-07-24 08:06:29 +02:00
committed by Diflow
parent e82e63b288
commit ae7fd3f87b

View File

@@ -71,7 +71,8 @@
const handleDropDatabase = () => { const handleDropDatabase = () => {
showModal(ConfirmModal, { showModal(ConfirmModal, {
message: _t('database.dropConfirm', { message: _t('database.dropConfirm', {
defaultMessage: 'Really drop database {name}? All opened sessions with this database will be forcefully closed.', defaultMessage:
'Really drop database {name}? All opened sessions with this database will be forcefully closed.',
values: { name }, values: { name },
}), }),
onConfirm: () => onConfirm: () =>
@@ -207,6 +208,18 @@
// showSnackbarSuccess(`Saved to archive ${resp.archiveFolder}`); // showSnackbarSuccess(`Saved to archive ${resp.archiveFolder}`);
}; };
const handleDatabaseChat = () => {
openNewTab({
title: 'Chat',
icon: 'img ai',
tabComponent: 'DatabaseChatTab',
props: {
conid: connection._id,
database: name,
},
});
};
const handleCompareWithCurrentDb = () => { const handleCompareWithCurrentDb = () => {
openNewTab( openNewTab(
{ {
@@ -312,7 +325,8 @@
const handleGenerateDropAllObjectsScript = () => { const handleGenerateDropAllObjectsScript = () => {
showModal(ConfirmModal, { showModal(ConfirmModal, {
message: _t('database.dropAllObjectsConfirm', { message: _t('database.dropAllObjectsConfirm', {
defaultMessage: 'This will generate script, after executing this script all objects in {name} will be dropped. Continue?', defaultMessage:
'This will generate script, after executing this script all objects in {name} will be dropped. Continue?',
values: { name }, values: { name },
}), }),
@@ -364,7 +378,9 @@ await dbgateApi.executeQuery(${JSON.stringify(
const handleShowDataDeployer = () => { const handleShowDataDeployer = () => {
showModal(ChooseArchiveFolderModal, { showModal(ChooseArchiveFolderModal, {
message: _t('database.chooseArchiveFolderForDataDeployer', { defaultMessage: 'Choose archive folder for data deployer' }), message: _t('database.chooseArchiveFolderForDataDeployer', {
defaultMessage: 'Choose archive folder for data deployer',
}),
onConfirm: archiveFolder => { onConfirm: archiveFolder => {
openNewTab( openNewTab(
{ {
@@ -396,57 +412,109 @@ await dbgateApi.executeQuery(${JSON.stringify(
driver?.databaseEngineTypes?.includes('sql') || driver?.databaseEngineTypes?.includes('document'); driver?.databaseEngineTypes?.includes('sql') || driver?.databaseEngineTypes?.includes('document');
return [ return [
hasPermission(`dbops/query`) && { onClick: handleNewQuery, text: _t('database.newQuery', { defaultMessage: 'New query' }), isNewQuery: true }, hasPermission(`dbops/query`) && {
onClick: handleNewQuery,
text: _t('database.newQuery', { defaultMessage: 'New query' }),
isNewQuery: true,
},
hasPermission(`dbops/model/edit`) && hasPermission(`dbops/model/edit`) &&
!connection.isReadOnly && !connection.isReadOnly &&
driver?.databaseEngineTypes?.includes('sql') && { onClick: handleNewTable, text: _t('database.newTable', { defaultMessage: 'New table' }) }, driver?.databaseEngineTypes?.includes('sql') && {
onClick: handleNewTable,
text: _t('database.newTable', { defaultMessage: 'New table' }),
},
!connection.isReadOnly && !connection.isReadOnly &&
hasPermission(`dbops/model/edit`) && hasPermission(`dbops/model/edit`) &&
driver?.databaseEngineTypes?.includes('document') && { driver?.databaseEngineTypes?.includes('document') && {
onClick: handleNewCollection, onClick: handleNewCollection,
text: _t('database.newCollection', { defaultMessage: 'New {collectionLabel}', values: { collectionLabel: driver?.collectionSingularLabel ?? 'collection/container' } }), text: _t('database.newCollection', {
defaultMessage: 'New {collectionLabel}',
values: { collectionLabel: driver?.collectionSingularLabel ?? 'collection/container' },
}),
}, },
hasPermission(`dbops/query`) && hasPermission(`dbops/query`) &&
driver?.databaseEngineTypes?.includes('sql') && driver?.databaseEngineTypes?.includes('sql') &&
isProApp() && { onClick: handleQueryDesigner, text: _t('database.designQuery', { defaultMessage: 'Design query' }) }, isProApp() && {
onClick: handleQueryDesigner,
text: _t('database.designQuery', { defaultMessage: 'Design query' }),
},
driver?.databaseEngineTypes?.includes('sql') && driver?.databaseEngineTypes?.includes('sql') &&
isProApp() && { isProApp() && {
onClick: handleNewPerspective, onClick: handleNewPerspective,
text: _t('database.designPerspectiveQuery', { defaultMessage: 'Design perspective query' }), text: _t('database.designPerspectiveQuery', { defaultMessage: 'Design perspective query' }),
}, },
connection.useSeparateSchemas && { onClick: handleRefreshSchemas, text: _t('database.refreshSchemas', { defaultMessage: 'Refresh schemas' }) }, connection.useSeparateSchemas && {
onClick: handleRefreshSchemas,
text: _t('database.refreshSchemas', { defaultMessage: 'Refresh schemas' }),
},
{ divider: true }, { divider: true },
isSqlOrDoc && isSqlOrDoc &&
!connection.isReadOnly && !connection.isReadOnly &&
hasPermission(`dbops/import`) && { onClick: handleImport, text: _t('database.import', { defaultMessage: 'Import' }) }, hasPermission(`dbops/import`) && {
isSqlOrDoc && hasPermission(`dbops/export`) && { onClick: handleExport, text: _t('database.export', { defaultMessage: 'Export' }) }, onClick: handleImport,
text: _t('database.import', { defaultMessage: 'Import' }),
},
isSqlOrDoc &&
hasPermission(`dbops/export`) && {
onClick: handleExport,
text: _t('database.export', { defaultMessage: 'Export' }),
},
driver?.supportsDatabaseRestore && driver?.supportsDatabaseRestore &&
isProApp() && isProApp() &&
hasPermission(`dbops/sql-dump/import`) && hasPermission(`dbops/sql-dump/import`) &&
!connection.isReadOnly && { onClick: handleRestoreDatabase, text: _t('database.restoreDatabaseBackup', { defaultMessage: 'Restore database backup' }) }, !connection.isReadOnly && {
onClick: handleRestoreDatabase,
text: _t('database.restoreDatabaseBackup', { defaultMessage: 'Restore database backup' }),
},
driver?.supportsDatabaseBackup && driver?.supportsDatabaseBackup &&
isProApp() && isProApp() &&
hasPermission(`dbops/sql-dump/export`) && { onClick: handleBackupDatabase, text: _t('database.createDatabaseBackup', { defaultMessage: 'Create database backup' }) }, hasPermission(`dbops/sql-dump/export`) && {
onClick: handleBackupDatabase,
text: _t('database.createDatabaseBackup', { defaultMessage: 'Create database backup' }),
},
isSqlOrDoc && isSqlOrDoc &&
!connection.isReadOnly && !connection.isReadOnly &&
!connection.singleDatabase && !connection.singleDatabase &&
isSqlOrDoc && isSqlOrDoc &&
hasPermission(`dbops/dropdb`) && { onClick: handleDropDatabase, text: _t('database.dropDatabase', { defaultMessage: 'Drop database' }) }, hasPermission(`dbops/dropdb`) && {
onClick: handleDropDatabase,
text: _t('database.dropDatabase', { defaultMessage: 'Drop database' }),
},
{ divider: true }, { divider: true },
driver?.databaseEngineTypes?.includes('sql') && { onClick: handleCopyName, text: _t('database.copyDatabaseName', { defaultMessage: 'Copy database name' }) }, driver?.databaseEngineTypes?.includes('sql') && {
driver?.databaseEngineTypes?.includes('sql') && { onClick: handleShowDiagram, text: _t('database.showDiagram', { defaultMessage: 'Show diagram' }) }, onClick: handleCopyName,
text: _t('database.copyDatabaseName', { defaultMessage: 'Copy database name' }),
},
driver?.databaseEngineTypes?.includes('sql') && {
onClick: handleShowDiagram,
text: _t('database.showDiagram', { defaultMessage: 'Show diagram' }),
},
driver?.databaseEngineTypes?.includes('sql') && driver?.databaseEngineTypes?.includes('sql') &&
hasPermission(`dbops/sql-generator`) && { onClick: handleSqlGenerator, text: _t('database.sqlGenerator', { defaultMessage: 'SQL Generator' }) }, hasPermission(`dbops/sql-generator`) && {
onClick: handleSqlGenerator,
text: _t('database.sqlGenerator', { defaultMessage: 'SQL Generator' }),
},
driver?.supportsDatabaseProfiler && driver?.supportsDatabaseProfiler &&
isProApp() && isProApp() &&
hasPermission(`dbops/profiler`) && { onClick: handleDatabaseProfiler, text: _t('database.databaseProfiler', { defaultMessage: 'Database profiler' }) }, hasPermission(`dbops/profiler`) && {
onClick: handleDatabaseProfiler,
text: _t('database.databaseProfiler', { defaultMessage: 'Database profiler' }),
},
// isSqlOrDoc && // isSqlOrDoc &&
// isSqlOrDoc && // isSqlOrDoc &&
// hasPermission(`dbops/model/view`) && { onClick: handleOpenJsonModel, text: 'Open model as JSON' }, // hasPermission(`dbops/model/view`) && { onClick: handleOpenJsonModel, text: 'Open model as JSON' },
isSqlOrDoc && isSqlOrDoc &&
isProApp() && isProApp() &&
hasPermission(`dbops/model/view`) && { onClick: handleExportModel, text: _t('database.exportDbModel', { defaultMessage: 'Export DB model' }) }, hasPermission(`dbops/model/view`) && {
onClick: handleExportModel,
text: _t('database.exportDbModel', { defaultMessage: 'Export DB model' }),
},
isProApp() &&
driver?.databaseEngineTypes?.includes('sql') && {
onClick: handleDatabaseChat,
text: _t('database.databaseChat', { defaultMessage: 'Database chat' }),
},
isSqlOrDoc && isSqlOrDoc &&
_.get($currentDatabase, 'connection._id') && _.get($currentDatabase, 'connection._id') &&
hasPermission('dbops/model/compare') && hasPermission('dbops/model/compare') &&
@@ -455,14 +523,23 @@ await dbgateApi.executeQuery(${JSON.stringify(
(_.get($currentDatabase, 'connection._id') == _.get(connection, '_id') && (_.get($currentDatabase, 'connection._id') == _.get(connection, '_id') &&
_.get($currentDatabase, 'name') != _.get(connection, 'name'))) && { _.get($currentDatabase, 'name') != _.get(connection, 'name'))) && {
onClick: handleCompareWithCurrentDb, onClick: handleCompareWithCurrentDb,
text: _t('database.compareWithCurrentDb', { defaultMessage: 'Compare with {name}', values: { name: _.get($currentDatabase, 'name') } }), text: _t('database.compareWithCurrentDb', {
defaultMessage: 'Compare with {name}',
values: { name: _.get($currentDatabase, 'name') },
}),
}, },
driver?.databaseEngineTypes?.includes('keyvalue') && { onClick: handleGenerateScript, text: _t('database.generateScript', { defaultMessage: 'Generate script' }) }, driver?.databaseEngineTypes?.includes('keyvalue') && {
onClick: handleGenerateScript,
text: _t('database.generateScript', { defaultMessage: 'Generate script' }),
},
($openedSingleDatabaseConnections.includes(connection._id) || ($openedSingleDatabaseConnections.includes(connection._id) ||
(_.get($currentDatabase, 'connection._id') == _.get(connection, '_id') && (_.get($currentDatabase, 'connection._id') == _.get(connection, '_id') &&
_.get($currentDatabase, 'name') == name)) && { onClick: handleDisconnect, text: _t('database.disconnect', { defaultMessage: 'Disconnect' }) }, _.get($currentDatabase, 'name') == name)) && {
onClick: handleDisconnect,
text: _t('database.disconnect', { defaultMessage: 'Disconnect' }),
},
{ divider: true }, { divider: true },