mongo query splitter, copy as mongo insert

This commit is contained in:
Jan Prochazka
2021-12-02 10:00:48 +01:00
parent 368993597c
commit 536897a84c
10 changed files with 67 additions and 14 deletions

View File

@@ -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>

View File

@@ -29,7 +29,7 @@
</div>
<div slot="footer">
<FormSubmit
<FormStyledButton
value="Save"
on:click={() => {
try {

View File

@@ -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

View File

@@ -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(),
},
};