delete cascade WIP

This commit is contained in:
Jan Prochazka
2021-09-28 11:32:23 +02:00
parent 8910a6bd07
commit 2c2b4fc08f
3 changed files with 153 additions and 6 deletions

View File

@@ -1,5 +1,6 @@
<script>
import _ from 'lodash';
import { keys } from 'localforage';
import _, { isEmpty } from 'lodash';
import FormStyledButton from '../elements/FormStyledButton.svelte';
import FormCheckboxField from '../forms/FormCheckboxField.svelte';
import FormProvider from '../forms/FormProvider.svelte';
@@ -15,6 +16,7 @@
export let onConfirm;
export let engine;
export let recreates;
export let deleteCascadesScripts;
$: isRecreated = _.sum(_.values(recreates || {})) > 0;
@@ -26,9 +28,41 @@
<div slot="header">Save changes</div>
<div class="editor">
<SqlEditor {engine} value={sql} readOnly />
<FormValues let:values>
<SqlEditor
{engine}
value={values.deleteReferencesCascade
? deleteCascadesScripts
.filter(({ script, title }) => values[`deleteReferences_${title}`] !== false)
.map(({ script, title }) => script)
.join('\n')
: sql}
readOnly
/>
</FormValues>
</div>
{#if !_.isEmpty(deleteCascadesScripts)}
<FormCheckboxField
templateProps={{ noMargin: true }}
label="Delete references CASCADE"
name="deleteReferencesCascade"
/>
{/if}
<FormValues let:values>
{#if values.deleteReferencesCascade}
{#each _.sortBy(deleteCascadesScripts, 'title') as deleteTable}
<FormCheckboxField
defaultValue={true}
templateProps={{ noMargin: true }}
label={deleteTable.title}
name={`deleteReferences_${deleteTable.title}`}
/>
{/each}
{/if}
</FormValues>
{#if isRecreated}
<div class="form-margin">
<div>

View File

@@ -16,10 +16,10 @@
export const matchingProps = ['conid', 'database', 'schemaName', 'pureName'];
export const allowAddToFavorites = props => true;
</script>
<script lang="ts">
import _ from 'lodash';
import App from '../App.svelte';
import TableDataGrid from '../datagrid/TableDataGrid.svelte';
import useGridConfig from '../utility/useGridConfig';
@@ -29,6 +29,7 @@
createChangeSet,
createGridCache,
createGridConfig,
getDeleteCascades,
TableFormViewDisplay,
TableGridDisplay,
} from 'dbgate-datalib';
@@ -87,11 +88,18 @@
export function save() {
const driver = findEngineDriver($connection, $extensions);
const script = changeSetToSql($changeSetStore?.value, $dbinfo);
const deleteCascades = getDeleteCascades($changeSetStore?.value, $dbinfo);
const sql = scriptToSql(driver, script);
const deleteCascadesScripts = _.map(deleteCascades, ({ title, commands }) => ({
title,
script: scriptToSql(driver, commands),
}));
console.log('deleteCascadesScripts', deleteCascadesScripts);
showModal(ConfirmSqlModal, {
sql,
onConfirm: () => handleConfirmSql(sql),
engine: driver.engine,
deleteCascadesScripts,
});
}
@@ -105,7 +113,6 @@
}
registerMenu({ command: 'tableData.save', tag: 'save' });
</script>
<TableDataGrid