mirror of
https://github.com/DeNNiiInc/dbgate.git
synced 2026-04-30 13:53:59 +00:00
rename column, drop column ctx menu works
This commit is contained in:
@@ -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 [
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user