This commit is contained in:
Nybkox
2025-01-23 15:46:15 +01:00
parent 645a1d35e8
commit bcf89b1f09
33 changed files with 832 additions and 87 deletions

View File

@@ -21,11 +21,15 @@
import { renameDatabaseObjectDialog, alterDatabaseDialog } from '../utility/alterDatabaseTools';
import AppObjectCore from './AppObjectCore.svelte';
import { DEFAULT_OBJECT_SEARCH_SETTINGS } from '../stores';
import { filterName } from 'dbgate-tools';
import { DEFAULT_OBJECT_SEARCH_SETTINGS, extensions } from '../stores';
import { filterName, findEngineDriver } from 'dbgate-tools';
import { useConnectionInfo } from '../utility/metadataLoaders';
export let data;
$: connection = useConnectionInfo({ conid: data.conid });
$: driver = findEngineDriver($connection, $extensions);
function handleRenameColumn() {
renameDatabaseObjectDialog(data.conid, data.database, data.columnName, (db, newName) => {
const tbl = db.tables.find(x => x.schemaName == data.schemaName && x.pureName == data.pureName);
@@ -42,11 +46,20 @@
}
function createMenu() {
return [
{ text: 'Rename column', onClick: handleRenameColumn },
const isPrimaryKey = !!data.primaryKey?.columns?.some(i => i.columnName == data.columnName);
const menu = [];
if (!driver.dialect.disableNonPrimaryKeyRename || isPrimaryKey) {
menu.push({ text: 'Rename column', onClick: handleRenameColumn });
}
menu.push(
{ text: 'Drop column', onClick: handleDropColumn },
{ text: 'Copy name', onClick: () => navigator.clipboard.writeText(data.columnName) },
];
{ text: 'Copy name', onClick: () => navigator.clipboard.writeText(data.columnName) }
);
return menu;
}
function getExtInfo(data) {

View File

@@ -57,6 +57,7 @@
let initialized = false;
let error = null;
let truncated = false;
$: console.log(error);
$: dbinfo = useDatabaseInfo({ conid, database });
@@ -97,6 +98,7 @@
return;
}
const { sql, isTruncated, isError, errorMessage } = response || {};
console.log(response);
truncated = isTruncated;
if (isError) {

View File

@@ -135,6 +135,16 @@
/>
{/if}
{#if driver?.showConnectionField('localDataCenter', $values, showConnectionFieldArgs)}
<FormTextField
label="Local DataCenter"
name="localDataCenter"
data-testid="ConnectionDriverFields_localDataCenter"
placeholder={driver?.defaultLocalDataCenter}
disabled={isConnected || disabledFields.includes('localDataCenter')}
/>
{/if}
{#if $authTypes && driver?.showConnectionField('authType', $values, showConnectionFieldArgs)}
{#key $authTypes}
<FormSelectField

View File

@@ -36,7 +36,9 @@
<FormCheckboxField name="notNull" label="NOT NULL" disabled={isReadOnly} />
{/if}
<FormCheckboxField name="isPrimaryKey" label="Is Primary Key" disabled={isReadOnly} />
<FormCheckboxField name="autoIncrement" label="Is Autoincrement" disabled={isReadOnly} />
{#if !driver?.dialect?.disableAutoIncrement}
<FormCheckboxField name="autoIncrement" label="Is Autoincrement" disabled={isReadOnly} />
{/if}
<FormTextField
name="defaultValue"
label="Default value. Please use valid SQL expression, eg. 'Hello World' for string value, '' for empty string"

View File

@@ -15,6 +15,7 @@
export let dialect;
export let disabled = false;
console.log(dialect);
</script>
<FormDropDownTextField name="dataType" label="Data type" menu={createDataTypesMenu} {disabled} />

View File

@@ -22,7 +22,7 @@ export default function newTable(connection, database) {
current: {
pureName: 'new_table',
schemaName: getAppliedCurrentSchema() ?? driver?.dialect?.defaultSchemaName,
columns: [
columns: driver.dialect?.defaultNewTableColumns ?? [
{
columnName: 'id',
dataType: 'int',

View File

@@ -61,6 +61,7 @@
$: engine = $values.engine;
$: driver = $extensions.drivers.find(x => x.engine == engine);
$: config = useConfig();
$: console.log('#values', $values);
const testIdRef = createRef(0);
@@ -110,6 +111,7 @@
'port',
'user',
'password',
'localDataCenter',
'defaultDatabase',
'singleDatabase',
'socketPath',