diff --git a/packages/types/dialect.d.ts b/packages/types/dialect.d.ts index 71f496d09..d42366159 100644 --- a/packages/types/dialect.d.ts +++ b/packages/types/dialect.d.ts @@ -32,4 +32,6 @@ export interface SqlDialect { dropReferencesWhenDropTable?: boolean; disableExplicitTransaction?: boolean; + + predefinedDataTypes: string[]; } diff --git a/packages/web/src/tableeditor/ColumnEditorModal.svelte b/packages/web/src/tableeditor/ColumnEditorModal.svelte index 4b62a32e2..15ffc839b 100644 --- a/packages/web/src/tableeditor/ColumnEditorModal.svelte +++ b/packages/web/src/tableeditor/ColumnEditorModal.svelte @@ -26,7 +26,7 @@ > - + diff --git a/packages/web/src/tableeditor/DataTypeEditor.svelte b/packages/web/src/tableeditor/DataTypeEditor.svelte index 37fd69052..82652d3e9 100644 --- a/packages/web/src/tableeditor/DataTypeEditor.svelte +++ b/packages/web/src/tableeditor/DataTypeEditor.svelte @@ -4,7 +4,7 @@ const { values, setFieldValue } = getFormContext(); - $: dataTypes = ['int', 'nvarchar(250)', 'datetime', 'numeric(10,2)', 'float']; + $: dataTypes = dialect?.predefinedDataTypes || ['int', 'varchar(250)', 'datetime', 'numeric(10,2)', 'float']; function createDataTypesMenu() { return dataTypes.map(type => ({ @@ -13,6 +13,7 @@ })); } + export let dialect; diff --git a/plugins/dbgate-plugin-mssql/src/frontend/driver.js b/plugins/dbgate-plugin-mssql/src/frontend/driver.js index dbcba6ac9..3acb4612e 100644 --- a/plugins/dbgate-plugin-mssql/src/frontend/driver.js +++ b/plugins/dbgate-plugin-mssql/src/frontend/driver.js @@ -40,6 +40,36 @@ const dialect = { isSparse: true, isPersisted: true, }, + + predefinedDataTypes: [ + 'bigint', + 'bit', + 'decimal(10,2)', + 'int', + 'money', + 'numeric', + 'smallint', + 'smallmoney', + 'tinyint', + 'float', + 'real', + 'date', + 'datetime2', + 'datetime', + 'datetimeofffset', + 'smalldatetime', + 'time', + 'char(20)', + 'varchar(250)', + 'text', + 'nchar(20)', + 'nvarchar(250)', + 'ntext', + 'binary(100)', + 'varbinary(100)', + 'image', + 'xml', + ], }; /** @type {import('dbgate-types').EngineDriver} */ diff --git a/plugins/dbgate-plugin-mysql/src/frontend/drivers.js b/plugins/dbgate-plugin-mysql/src/frontend/drivers.js index 87ba6f939..348c0a60f 100644 --- a/plugins/dbgate-plugin-mysql/src/frontend/drivers.js +++ b/plugins/dbgate-plugin-mysql/src/frontend/drivers.js @@ -36,6 +36,38 @@ const dialect = { isUnsigned: true, isZerofill: true, }, + + predefinedDataTypes: [ + 'char(20)', + 'varchar(250)', + 'binary(250)', + 'varbinary(250)', + 'tinyblob', + 'tinytext', + 'text(1000)', + 'blob(1000)', + 'mediumtext', + 'mediumblob', + 'longtext', + 'longblob', + 'enum(val1,val2,val3)', + 'set(val1,val2,val3)', + 'bit(32)', + 'tinyint', + 'bool', + 'smallint', + 'mediumint', + 'int', + 'bigint', + 'float', + 'double', + 'decimal', + 'date', + 'datetime', + 'timestamp', + 'time', + 'year', + ], }; const mysqlDriverBase = { diff --git a/plugins/dbgate-plugin-postgres/src/frontend/drivers.js b/plugins/dbgate-plugin-postgres/src/frontend/drivers.js index bbffecbc9..d533ea3ea 100644 --- a/plugins/dbgate-plugin-postgres/src/frontend/drivers.js +++ b/plugins/dbgate-plugin-postgres/src/frontend/drivers.js @@ -32,6 +32,52 @@ const dialect = { dropCheck: true, dropReferencesWhenDropTable: true, + + predefinedDataTypes: [ + 'bigint', + 'bigserial', + 'bit', + 'varbit', + 'boolean', + 'box', + 'bytea', + 'char(20)', + 'varchar(250)', + 'cidr', + 'circle', + 'date', + 'double precision', + 'inet', + 'int', + 'interval', + 'json', + 'jsonb', + 'line', + 'lseg', + 'macaddr', + 'macaddr8', + 'money', + 'numeric(10,2)', + 'path', + 'pg_lsn', + 'pg_snapshot', + 'point', + 'polygon', + 'real', + 'smallint', + 'smallserial', + 'serial', + 'text', + 'time', + 'timetz', + 'timestamp', + 'timestamptz', + 'tsquery', + 'tsvector', + 'txid_snapshot', + 'uuid', + 'xml', + ], }; const postgresDriverBase = { diff --git a/plugins/dbgate-plugin-sqlite/src/frontend/driver.js b/plugins/dbgate-plugin-sqlite/src/frontend/driver.js index 6041d65c6..b1b99b2f6 100644 --- a/plugins/dbgate-plugin-sqlite/src/frontend/driver.js +++ b/plugins/dbgate-plugin-sqlite/src/frontend/driver.js @@ -53,6 +53,8 @@ const driver = { getQuerySplitterOptions: (usage) => (usage == 'stream' ? noSplitSplitterOptions : sqliteSplitterOptions), // isFileDatabase: true, isElectronOnly: true, + + predefinedDataTypes: ['integer', 'real', 'text', 'blob'], }; module.exports = driver;