mirror of
https://github.com/DeNNiiInc/dbgate.git
synced 2026-04-20 21:46:00 +00:00
mongo query splitter, copy as mongo insert
This commit is contained in:
@@ -250,6 +250,7 @@
|
||||
import { showModal } from '../modals/modalTools';
|
||||
import { updateStatuBarInfo } from '../widgets/StatusBar.svelte';
|
||||
import StatusBarTabItem from '../widgets/StatusBarTabItem.svelte';
|
||||
import { findCommand } from '../commands/runCommand';
|
||||
|
||||
export let onLoadNextData = undefined;
|
||||
export let grider = undefined;
|
||||
@@ -265,6 +266,8 @@
|
||||
export let focusOnVisible = false;
|
||||
export let formViewAvailable = false;
|
||||
export let errorMessage = undefined;
|
||||
export let pureName = undefined;
|
||||
export let schemaName = undefined;
|
||||
|
||||
export let isLoadedAll;
|
||||
export let loadedTime;
|
||||
@@ -379,8 +382,8 @@
|
||||
// @ts-ignore
|
||||
const columns = colIndexes.map(col => realColumnUniqueNames[col]);
|
||||
copyRowsToClipboard(format, columns, rows, {
|
||||
schemaName: display?.baseTable?.schemaName,
|
||||
pureName: display?.baseTable?.pureName || 'target',
|
||||
schemaName,
|
||||
pureName: pureName || 'target',
|
||||
driver: display?.driver || driverBase,
|
||||
keyColumns: display?.baseTable?.primaryKey?.columns?.map(col => col.columnName) || [
|
||||
display?.columns ? display?.columns[0].columnName : columns[0],
|
||||
@@ -1218,6 +1221,12 @@
|
||||
{#if display.filterCount > 0}
|
||||
<FormStyledButton value="Reset filter" on:click={() => display.clearFilters()} />
|
||||
{/if}
|
||||
<FormStyledButton
|
||||
value="Add document"
|
||||
on:click={() => {
|
||||
findCommand('collectionTable.newJson')?.onClick();
|
||||
}}
|
||||
/>
|
||||
</div>
|
||||
{:else if grider.errors && grider.errors.length > 0}
|
||||
<div>
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
</div>
|
||||
|
||||
<div slot="footer">
|
||||
<FormSubmit
|
||||
<FormStyledButton
|
||||
value="Save"
|
||||
on:click={() => {
|
||||
try {
|
||||
|
||||
@@ -55,6 +55,7 @@
|
||||
import { registerMenu } from '../utility/contextMenu';
|
||||
import EditJsonModal from '../modals/EditJsonModal.svelte';
|
||||
import ChangeSetGrider from '../datagrid/ChangeSetGrider';
|
||||
import { setContext } from 'svelte';
|
||||
|
||||
export let tabid;
|
||||
export let conid;
|
||||
@@ -89,7 +90,8 @@
|
||||
config.update,
|
||||
$cache,
|
||||
cache.update,
|
||||
loadedRows
|
||||
loadedRows,
|
||||
$changeSetStore?.value
|
||||
)
|
||||
: null;
|
||||
// $: console.log('LOADED ROWS MONGO', loadedRows);
|
||||
@@ -145,6 +147,9 @@
|
||||
}
|
||||
|
||||
registerMenu({ command: 'collectionTable.save', tag: 'save' }, { command: 'collectionTable.newJson', tag: 'edit' });
|
||||
|
||||
const collapsedLeftColumnStore = writable(false);
|
||||
setContext('collapsedLeftColumnStore', collapsedLeftColumnStore);
|
||||
</script>
|
||||
|
||||
<DataGrid
|
||||
|
||||
@@ -132,6 +132,11 @@ const clipboardUpdatesFormatter = () => (columns, rows, options) => {
|
||||
return dmp.s;
|
||||
};
|
||||
|
||||
const clipboardMongoInsertFormatter = () => (columns, rows, options) => {
|
||||
const { pureName } = options;
|
||||
return rows.map(row => `db.${pureName}.insert(${JSON.stringify(_.pick(row, columns), undefined, 2)});`).join('\n');
|
||||
};
|
||||
|
||||
export function formatClipboardRows(format, columns, rows, options) {
|
||||
if (format in copyRowsFormatDefs) {
|
||||
return copyRowsFormatDefs[format].formatter(columns, rows, options);
|
||||
@@ -185,4 +190,9 @@ export const copyRowsFormatDefs = {
|
||||
name: 'SQL UPDATEs',
|
||||
formatter: clipboardUpdatesFormatter(),
|
||||
},
|
||||
mongoInsert: {
|
||||
label: 'Copy as Mongo INSERTs',
|
||||
name: 'Mongo UPDATEs',
|
||||
formatter: clipboardMongoInsertFormatter(),
|
||||
},
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user