rename column, drop column ctx menu works

This commit is contained in:
Jan Prochazka
2021-09-11 08:47:22 +02:00
parent 82601dea24
commit f47c83fece
3 changed files with 29 additions and 34 deletions

View File

@@ -3,36 +3,29 @@
</script> </script>
<script lang="ts"> <script lang="ts">
import _ from 'lodash';
import { getColumnIcon } from '../elements/ColumnLabel.svelte'; import { getColumnIcon } from '../elements/ColumnLabel.svelte';
import { renameDatabaseObjectDialog } from '../utility/alterDatabaseTools'; import { renameDatabaseObjectDialog, alterDatabaseDialog } from '../utility/alterDatabaseTools';
import AppObjectCore from './AppObjectCore.svelte'; import AppObjectCore from './AppObjectCore.svelte';
export let data; export let data;
function handleRenameColumn() { function handleRenameColumn() {
renameDatabaseObjectDialog(data.conid, data.database, data.columnName, (db, newName) => ({ renameDatabaseObjectDialog(data.conid, data.database, data.columnName, (db, newName) => {
...db, const tbl = db.tables.find(x => x.schemaName == data.schemaName && x.pureName == data.pureName);
tables: db.tables.map(tbl => const col = tbl.columns.find(x => x.columnName == data.columnName);
tbl.schemaName == data.schemaName && tbl.pureName == data.pureName col.columnName = newName;
? { });
...tbl,
columns: tbl.columns.map(
col =>
(col.columnName = data.columnName
? {
...col,
columnName: newName,
}
: col)
),
}
: tbl
),
}));
} }
function handleDropColumn() {} function handleDropColumn() {
alterDatabaseDialog(data.conid, data.database, db => {
const tbl = db.tables.find(x => x.schemaName == data.schemaName && x.pureName == data.pureName);
_.remove(tbl.columns as any[], x => x.columnName == data.columnName);
});
}
function createMenu() { function createMenu() {
return [ return [

View File

@@ -513,20 +513,20 @@
}); });
} else if (menu.isDrop) { } else if (menu.isDrop) {
const { conid, database } = data; const { conid, database } = data;
alterDatabaseDialog(conid, database, db => ({ alterDatabaseDialog(conid, database, db => {
...db, _.remove(
[data.objectTypeField]: (db[data.objectTypeField] || []).filter( db[data.objectTypeField] as any[],
x => x.schemaName != data.schemaName || x.pureName != data.pureName x => x.schemaName == data.schemaName && x.pureName == data.pureName
), );
})); });
} else if (menu.isRename) { } else if (menu.isRename) {
const { conid, database } = data; const { conid, database } = data;
renameDatabaseObjectDialog(conid, database, data.pureName, (db, newName) => ({ renameDatabaseObjectDialog(conid, database, data.pureName, (db, newName) => {
...db, const obj = db[data.objectTypeField].find(
[data.objectTypeField]: (db[data.objectTypeField] || []).map(x => x => x.schemaName == data.schemaName && x.pureName == data.pureName
x.schemaName == data.schemaName && x.pureName == data.pureName ? { ...x, pureName: newName } : x );
), obj.pureName = newName;
})); });
} else { } else {
openDatabaseObjectDetail(menu.tab, menu.scriptTemplate, data, menu.forceNewTab, menu.initialData); openDatabaseObjectDetail(menu.tab, menu.scriptTemplate, data, menu.forceNewTab, menu.initialData);
} }

View File

@@ -1,3 +1,4 @@
import _ from 'lodash'
import { findEngineDriver, generateDbPairingId, getAlterDatabaseScript } from 'dbgate-tools'; import { findEngineDriver, generateDbPairingId, getAlterDatabaseScript } from 'dbgate-tools';
import InputTextModal from '../modals/InputTextModal.svelte'; import InputTextModal from '../modals/InputTextModal.svelte';
import { showModal } from '../modals/modalTools'; import { showModal } from '../modals/modalTools';
@@ -11,7 +12,8 @@ export async function alterDatabaseDialog(conid, database, updateFunc) {
const driver = findEngineDriver(conn, getExtensions()); const driver = findEngineDriver(conn, getExtensions());
const db = generateDbPairingId(await getDatabaseInfo({ conid, database })); const db = generateDbPairingId(await getDatabaseInfo({ conid, database }));
const dbUpdated = updateFunc(db); const dbUpdated = _.cloneDeep(db);
updateFunc(dbUpdated);
const sql = getAlterDatabaseScript(db, dbUpdated, {}, db, driver); const sql = getAlterDatabaseScript(db, dbUpdated, {}, db, driver);