mirror of
https://github.com/DeNNiiInc/dbgate.git
synced 2026-04-24 00:16:00 +00:00
delete cascade
This commit is contained in:
@@ -45,6 +45,7 @@ function processDependencies(
|
|||||||
conditionType: 'exists',
|
conditionType: 'exists',
|
||||||
subQuery: {
|
subQuery: {
|
||||||
commandType: 'select',
|
commandType: 'select',
|
||||||
|
selectAll: true,
|
||||||
from: {
|
from: {
|
||||||
name: {
|
name: {
|
||||||
pureName: fk.pureName,
|
pureName: fk.pureName,
|
||||||
|
|||||||
@@ -1,11 +1,10 @@
|
|||||||
<script>
|
<script>
|
||||||
import { keys } from 'localforage';
|
import _, { startsWith } from 'lodash';
|
||||||
import _, { isEmpty } from 'lodash';
|
import { writable } from 'svelte/store';
|
||||||
import FormStyledButton from '../elements/FormStyledButton.svelte';
|
import FormStyledButton from '../elements/FormStyledButton.svelte';
|
||||||
import FormCheckboxField from '../forms/FormCheckboxField.svelte';
|
import FormCheckboxField from '../forms/FormCheckboxField.svelte';
|
||||||
import FormProvider from '../forms/FormProvider.svelte';
|
import FormProviderCore from '../forms/FormProviderCore.svelte';
|
||||||
import FormSubmit from '../forms/FormSubmit.svelte';
|
import FormSubmit from '../forms/FormSubmit.svelte';
|
||||||
import FormValues from '../forms/FormValues.svelte';
|
|
||||||
import FontIcon from '../icons/FontIcon.svelte';
|
import FontIcon from '../icons/FontIcon.svelte';
|
||||||
import SqlEditor from '../query/SqlEditor.svelte';
|
import SqlEditor from '../query/SqlEditor.svelte';
|
||||||
|
|
||||||
@@ -19,29 +18,28 @@
|
|||||||
export let deleteCascadesScripts;
|
export let deleteCascadesScripts;
|
||||||
|
|
||||||
$: isRecreated = _.sum(_.values(recreates || {})) > 0;
|
$: isRecreated = _.sum(_.values(recreates || {})) > 0;
|
||||||
|
const values = writable({});
|
||||||
|
|
||||||
// $: console.log('recreates', recreates);
|
// $: console.log('recreates', recreates);
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<FormProvider>
|
<FormProviderCore {values}>
|
||||||
<ModalBase {...$$restProps}>
|
<ModalBase {...$$restProps}>
|
||||||
<div slot="header">Save changes</div>
|
<div slot="header">Save changes</div>
|
||||||
|
|
||||||
<div class="editor">
|
<div class="editor">
|
||||||
<FormValues let:values>
|
<SqlEditor
|
||||||
<SqlEditor
|
{engine}
|
||||||
{engine}
|
value={$values.deleteReferencesCascade
|
||||||
value={values.deleteReferencesCascade
|
? [
|
||||||
? [
|
...deleteCascadesScripts
|
||||||
...deleteCascadesScripts
|
.filter(({ script, title }) => $values[`deleteReferencesFor_${title}`] !== false)
|
||||||
.filter(({ script, title }) => values[`deleteReferences_${title}`] !== false)
|
.map(({ script, title }) => script),
|
||||||
.map(({ script, title }) => script),
|
sql,
|
||||||
sql,
|
].join('\n')
|
||||||
].join('\n')
|
: sql}
|
||||||
: sql}
|
readOnly
|
||||||
readOnly
|
/>
|
||||||
/>
|
|
||||||
</FormValues>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{#if !_.isEmpty(deleteCascadesScripts)}
|
{#if !_.isEmpty(deleteCascadesScripts)}
|
||||||
@@ -54,25 +52,39 @@
|
|||||||
</div>
|
</div>
|
||||||
{/if}
|
{/if}
|
||||||
|
|
||||||
<FormValues let:values>
|
{#if $values.deleteReferencesCascade}
|
||||||
{#if values.deleteReferencesCascade}
|
<div class="form-margin flex">
|
||||||
<!-- <div class="form-margin flex">
|
<FormStyledButton
|
||||||
</div> -->
|
value="Check all"
|
||||||
|
on:click={() => {
|
||||||
|
$values = _.omitBy($values, (v, k) => k.startsWith('deleteReferencesFor_'));
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
<FormStyledButton
|
||||||
|
value="Uncheck all"
|
||||||
|
on:click={() => {
|
||||||
|
const newValues = { ...$values };
|
||||||
|
for (const item of deleteCascadesScripts) {
|
||||||
|
newValues[`deleteReferencesFor_${item.title}`] = false;
|
||||||
|
}
|
||||||
|
$values = newValues;
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="form-margin flex">
|
<div class="form-margin flex flex-wrap">
|
||||||
{#each _.sortBy(deleteCascadesScripts, 'title') as deleteTable}
|
{#each _.sortBy(deleteCascadesScripts, 'title') as deleteTable}
|
||||||
<div class="mr-1">
|
<div class="mr-1 nowrap">
|
||||||
<FormCheckboxField
|
<FormCheckboxField
|
||||||
defaultValue={true}
|
defaultValue={true}
|
||||||
templateProps={{ noMargin: true }}
|
templateProps={{ noMargin: true }}
|
||||||
label={deleteTable.title}
|
label={deleteTable.title}
|
||||||
name={`deleteReferences_${deleteTable.title}`}
|
name={`deleteReferencesFor_${deleteTable.title}`}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
{/each}
|
{/each}
|
||||||
</div>
|
</div>
|
||||||
{/if}
|
{/if}
|
||||||
</FormValues>
|
|
||||||
|
|
||||||
{#if isRecreated}
|
{#if isRecreated}
|
||||||
<div class="form-margin">
|
<div class="form-margin">
|
||||||
@@ -89,29 +101,27 @@
|
|||||||
{/if}
|
{/if}
|
||||||
|
|
||||||
<div slot="footer">
|
<div slot="footer">
|
||||||
<FormValues let:values>
|
<FormSubmit
|
||||||
<FormSubmit
|
value="OK"
|
||||||
value="OK"
|
disabled={isRecreated && !$values.allowRecreate}
|
||||||
disabled={isRecreated && !values.allowRecreate}
|
on:click={e => {
|
||||||
on:click={e => {
|
closeCurrentModal();
|
||||||
closeCurrentModal();
|
onConfirm(
|
||||||
onConfirm(
|
e.detail.deleteReferencesCascade
|
||||||
e.detail.deleteReferencesCascade
|
? [
|
||||||
? [
|
...deleteCascadesScripts
|
||||||
...deleteCascadesScripts
|
.filter(({ script, title }) => e.detail[`deleteReferencesFor_${title}`] !== false)
|
||||||
.filter(({ script, title }) => e.detail[`deleteReferences_${title}`] !== false)
|
.map(({ script, title }) => script),
|
||||||
.map(({ script, title }) => script),
|
sql,
|
||||||
sql,
|
].join('\n')
|
||||||
].join('\n')
|
: null
|
||||||
: null
|
);
|
||||||
);
|
}}
|
||||||
}}
|
/>
|
||||||
/>
|
<FormStyledButton type="button" value="Close" on:click={closeCurrentModal} />
|
||||||
<FormStyledButton type="button" value="Close" on:click={closeCurrentModal} />
|
|
||||||
</FormValues>
|
|
||||||
</div>
|
</div>
|
||||||
</ModalBase>
|
</ModalBase>
|
||||||
</FormProvider>
|
</FormProviderCore>
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
.editor {
|
.editor {
|
||||||
@@ -123,4 +133,8 @@
|
|||||||
.form-margin {
|
.form-margin {
|
||||||
margin: var(--dim-large-form-margin);
|
margin: var(--dim-large-form-margin);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.flex-wrap {
|
||||||
|
flex-wrap: wrap;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -97,7 +97,7 @@
|
|||||||
console.log('deleteCascadesScripts', deleteCascadesScripts);
|
console.log('deleteCascadesScripts', deleteCascadesScripts);
|
||||||
showModal(ConfirmSqlModal, {
|
showModal(ConfirmSqlModal, {
|
||||||
sql,
|
sql,
|
||||||
onConfirm: () => handleConfirmSql(sql),
|
onConfirm: sqlOverride => handleConfirmSql(sqlOverride || sql),
|
||||||
engine: driver.engine,
|
engine: driver.engine,
|
||||||
deleteCascadesScripts,
|
deleteCascadesScripts,
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user