mirror of
https://github.com/DeNNiiInc/dbgate.git
synced 2026-04-18 17:16:01 +00:00
sql generator
This commit is contained in:
@@ -32,28 +32,44 @@
|
||||
export let conid;
|
||||
export let database;
|
||||
|
||||
export let initialConfig = {
|
||||
checkIfTableExists: true,
|
||||
disableConstraints: true,
|
||||
createTables: true,
|
||||
createForeignKeys: true,
|
||||
createViews: true,
|
||||
createProcedures: true,
|
||||
createFunctions: true,
|
||||
createTriggers: true,
|
||||
};
|
||||
|
||||
export let initialObjects = null;
|
||||
|
||||
let busy = false;
|
||||
let managerSize;
|
||||
let objectsFilter = '';
|
||||
let sqlPreview = '';
|
||||
let initialized = false;
|
||||
|
||||
const checkedObjectsStore = writable([]);
|
||||
const valuesStore = writable({
|
||||
checkIfTableExists: true,
|
||||
disableConstraints: true,
|
||||
});
|
||||
$: dbinfo = useDatabaseInfo({ conid, database });
|
||||
|
||||
const checkedObjectsStore = writable(initialObjects || ($dbinfo && $dbinfo.tables) || []);
|
||||
const valuesStore = writable(initialConfig);
|
||||
const loadRef = createRef(null);
|
||||
|
||||
$: console.log('checkedObjectsStore', $checkedObjectsStore);
|
||||
// $: console.log('checkedObjectsStore', $checkedObjectsStore);
|
||||
|
||||
$: objects = useDatabaseInfo({ conid, database });
|
||||
$: if ($dbinfo && !initialized && !initialObjects) {
|
||||
initialized = true;
|
||||
$checkedObjectsStore = $dbinfo.tables;
|
||||
}
|
||||
|
||||
$: generatePreview($valuesStore, $checkedObjectsStore);
|
||||
|
||||
$: objectList = _.flatten(
|
||||
['tables', 'views', 'procedures', 'functions'].map(objectTypeField =>
|
||||
_.sortBy(
|
||||
(($objects || {})[objectTypeField] || []).map(obj => ({ ...obj, objectTypeField })),
|
||||
(($dbinfo || {})[objectTypeField] || []).map(obj => ({ ...obj, objectTypeField })),
|
||||
['schemaName', 'pureName']
|
||||
)
|
||||
)
|
||||
@@ -91,7 +107,7 @@
|
||||
|
||||
<HorizontalSplitter initialValue="300px" bind:size={managerSize}>
|
||||
<svelte:fragment slot="1">
|
||||
<div>
|
||||
<div class="flexcol flex1">
|
||||
<WidgetTitle>Choose objects</WidgetTitle>
|
||||
<SearchBoxWrapper>
|
||||
<SearchInput placeholder="Search tables or objects" bind:value={objectsFilter} />
|
||||
@@ -116,40 +132,54 @@
|
||||
<SqlEditor readOnly value={sqlPreview} />
|
||||
</svelte:fragment>
|
||||
<svelte:fragment slot="2">
|
||||
<WidgetsInnerContainer>
|
||||
<FormValues let:values>
|
||||
<FormCheckboxField label="Drop tables" name="dropTables" />
|
||||
{#if values.dropTables}
|
||||
<div class="ml-2">
|
||||
<FormCheckboxField label="Test if exists" name="checkIfTableExists" />
|
||||
</div>
|
||||
{/if}
|
||||
<FormCheckboxField label="Drop references" name="dropReferences" />
|
||||
<div class="flexcol flex1">
|
||||
<WidgetTitle>Generator settings</WidgetTitle>
|
||||
<WidgetsInnerContainer>
|
||||
<FormValues let:values>
|
||||
<div class="obj-heading">Tables</div>
|
||||
<FormCheckboxField label="Drop tables" name="dropTables" />
|
||||
{#if values.dropTables}
|
||||
<div class="ml-2">
|
||||
<FormCheckboxField label="Test if exists" name="checkIfTableExists" />
|
||||
</div>
|
||||
{/if}
|
||||
<FormCheckboxField label="Drop references" name="dropReferences" />
|
||||
|
||||
<FormCheckboxField label="Create tables" name="createTables" />
|
||||
<FormCheckboxField label="Create references" name="createReferences" />
|
||||
<FormCheckboxField label="Create foreign keys" name="createForeignKeys" />
|
||||
<FormCheckboxField label="Create indexes" name="createIndexes" />
|
||||
<FormCheckboxField label="Create tables" name="createTables" />
|
||||
<FormCheckboxField label="Create references" name="createReferences" />
|
||||
<FormCheckboxField label="Create foreign keys" name="createForeignKeys" />
|
||||
<FormCheckboxField label="Create indexes" name="createIndexes" />
|
||||
|
||||
<FormCheckboxField label="Insert" name="insert" />
|
||||
{#if values.insert}
|
||||
<div class="ml-2">
|
||||
<FormCheckboxField label="Skip autoincrement column" name="skipAutoincrementColumn" />
|
||||
<FormCheckboxField label="Disable constraints" name="disableConstraints" />
|
||||
<FormCheckboxField label="Omit NULL values" name="omitNulls" />
|
||||
</div>
|
||||
{/if}
|
||||
<FormCheckboxField label="Insert" name="insert" />
|
||||
{#if values.insert}
|
||||
<div class="ml-2">
|
||||
<FormCheckboxField label="Skip autoincrement column" name="skipAutoincrementColumn" />
|
||||
<FormCheckboxField label="Disable constraints" name="disableConstraints" />
|
||||
<FormCheckboxField label="Omit NULL values" name="omitNulls" />
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
<FormCheckboxField label="Truncate tables (delete all rows)" name="truncate" />
|
||||
<FormCheckboxField label="Truncate tables (delete all rows)" name="truncate" />
|
||||
|
||||
<!-- <HashCheckBox label='Drop' hashName={`gensql.drop${objTypePascal}`} onChange={onChange} />
|
||||
{#each ['View', 'Procedure', 'Function', 'Trigger'] as objtype}
|
||||
<div class="obj-heading">{objtype}s</div>
|
||||
<FormCheckboxField label="Create" name={`create${objtype}s`} />
|
||||
<FormCheckboxField label="Drop" name={`drop${objtype}s`} />
|
||||
{#if values[`drop${objtype}s`]}
|
||||
<div class="ml-2">
|
||||
<FormCheckboxField label="Check if exists" name={`checkIf${objtype}Exists`} />
|
||||
</div>
|
||||
{/if}
|
||||
{/each}
|
||||
<!-- <HashCheckBox label='Drop' hashName={`gensql.drop${objTypePascal}`} onChange={onChange} />
|
||||
{
|
||||
getHashValue(`gensql.drop${objTypePascal}`) == '1' &&
|
||||
<HashCheckBox label='Test if exists' hashName={`gensql.checkIf${objTypePascal}Exists`} indent={1} onChange={onChange} defaultChecked />
|
||||
}
|
||||
<HashCheckBox label='Create' hashName={`gensql.create${objTypePascal}`} onChange={onChange} /> -->
|
||||
</FormValues>
|
||||
</WidgetsInnerContainer>
|
||||
</FormValues>
|
||||
</WidgetsInnerContainer>
|
||||
</div>
|
||||
</svelte:fragment>
|
||||
</HorizontalSplitter>
|
||||
</svelte:fragment>
|
||||
@@ -162,3 +192,11 @@
|
||||
</svelte:fragment>
|
||||
</ModalBase>
|
||||
</FormProviderCore>
|
||||
|
||||
<style>
|
||||
.obj-heading {
|
||||
font-size: 20px;
|
||||
margin: 5px;
|
||||
margin-top: 20px;
|
||||
}
|
||||
</style>
|
||||
|
||||
Reference in New Issue
Block a user