diff --git a/packages/web/src/commands/stdCommands.ts b/packages/web/src/commands/stdCommands.ts index b24b77bcc..a1fc8f2c1 100644 --- a/packages/web/src/commands/stdCommands.ts +++ b/packages/web/src/commands/stdCommands.ts @@ -682,6 +682,40 @@ registerCommand({ }, }); +if (isProApp()) { + registerCommand({ + id: 'database.compare', + category: 'Database', + name: 'Compare databases', + toolbar: true, + icon: 'icon compare', + testEnabled: () => + getCurrentDatabase() != null && + findEngineDriver(getCurrentDatabase()?.connection, getExtensions())?.databaseEngineTypes?.includes('sql'), + onClick: () => { + openNewTab( + { + title: 'Compare', + icon: 'img compare', + tabComponent: 'CompareModelTab', + props: { + conid: getCurrentDatabase()?.connection?._id, + database: getCurrentDatabase()?.name, + }, + }, + { + editor: { + sourceConid: getCurrentDatabase()?.connection?._id, + sourceDatabase: getCurrentDatabase()?.name, + targetConid: getCurrentDatabase()?.connection?._id, + targetDatabase: getCurrentDatabase()?.name, + }, + } + ); + }, + }); +} + if (hasPermission('settings/change')) { registerCommand({ id: 'settings.commands', diff --git a/packages/web/src/modals/ModalBase.svelte b/packages/web/src/modals/ModalBase.svelte index 7228f8541..9a86b47c0 100644 --- a/packages/web/src/modals/ModalBase.svelte +++ b/packages/web/src/modals/ModalBase.svelte @@ -118,7 +118,7 @@ .window.simplefix { margin: auto; - max-width: 600px; + max-width: 750px; margin-top: 10vh; } diff --git a/packages/web/src/modals/NewObjectModal.svelte b/packages/web/src/modals/NewObjectModal.svelte index d5a4e07f3..d6d6737f5 100644 --- a/packages/web/src/modals/NewObjectModal.svelte +++ b/packages/web/src/modals/NewObjectModal.svelte @@ -85,6 +85,14 @@ command: 'database.export', testid: 'NewObjectModal_databaseExport', }, + { + icon: 'icon compare', + colorClass: 'color-icon-red', + title: 'Compare database', + description: 'Compare database schemas', + command: 'database.compare', + testid: 'NewObjectModal_databaseCompare', + }, ];