mirror of
https://github.com/DeNNiiInc/dbgate.git
synced 2026-04-27 17:16:01 +00:00
mysql default value #455
This commit is contained in:
@@ -5,18 +5,33 @@ const sql = require('./sql');
|
|||||||
const { DatabaseAnalyser } = require('dbgate-tools');
|
const { DatabaseAnalyser } = require('dbgate-tools');
|
||||||
const { isTypeString, isTypeNumeric } = require('dbgate-tools');
|
const { isTypeString, isTypeNumeric } = require('dbgate-tools');
|
||||||
|
|
||||||
function getColumnInfo({
|
function quoteDefaultValue(value) {
|
||||||
isNullable,
|
if (value == null) return value;
|
||||||
extra,
|
if (!isNaN(value) && !isNaN(parseFloat(value))) return value;
|
||||||
columnName,
|
if (_.isString(value) && value.startsWith('CURRENT_')) return value;
|
||||||
dataType,
|
if (_.isString(value)) {
|
||||||
charMaxLength,
|
return `'${value.replace("'", "\\'")}'`;
|
||||||
numericPrecision,
|
}
|
||||||
numericScale,
|
return value;
|
||||||
defaultValue,
|
}
|
||||||
columnComment,
|
|
||||||
columnType,
|
function getColumnInfo(
|
||||||
}) {
|
{
|
||||||
|
isNullable,
|
||||||
|
extra,
|
||||||
|
columnName,
|
||||||
|
dataType,
|
||||||
|
charMaxLength,
|
||||||
|
numericPrecision,
|
||||||
|
numericScale,
|
||||||
|
defaultValue,
|
||||||
|
columnComment,
|
||||||
|
columnType,
|
||||||
|
},
|
||||||
|
driver
|
||||||
|
) {
|
||||||
|
const { quoteDefaultValues } = driver.__analyserInternals;
|
||||||
|
|
||||||
const columnTypeTokens = _.isString(columnType) ? columnType.split(' ').map(x => x.trim().toLowerCase()) : [];
|
const columnTypeTokens = _.isString(columnType) ? columnType.split(' ').map(x => x.trim().toLowerCase()) : [];
|
||||||
let fullDataType = dataType;
|
let fullDataType = dataType;
|
||||||
if (charMaxLength && isTypeString(dataType)) fullDataType = `${dataType}(${charMaxLength})`;
|
if (charMaxLength && isTypeString(dataType)) fullDataType = `${dataType}(${charMaxLength})`;
|
||||||
@@ -28,7 +43,7 @@ function getColumnInfo({
|
|||||||
columnName,
|
columnName,
|
||||||
columnComment,
|
columnComment,
|
||||||
dataType: fullDataType,
|
dataType: fullDataType,
|
||||||
defaultValue,
|
defaultValue: quoteDefaultValues ? quoteDefaultValue(defaultValue) : defaultValue,
|
||||||
isUnsigned: columnTypeTokens.includes('unsigned'),
|
isUnsigned: columnTypeTokens.includes('unsigned'),
|
||||||
isZerofill: columnTypeTokens.includes('zerofill'),
|
isZerofill: columnTypeTokens.includes('zerofill'),
|
||||||
};
|
};
|
||||||
@@ -101,7 +116,7 @@ class Analyser extends DatabaseAnalyser {
|
|||||||
...table,
|
...table,
|
||||||
objectId: table.pureName,
|
objectId: table.pureName,
|
||||||
contentHash: _.isDate(table.modifyDate) ? table.modifyDate.toISOString() : table.modifyDate,
|
contentHash: _.isDate(table.modifyDate) ? table.modifyDate.toISOString() : table.modifyDate,
|
||||||
columns: columns.rows.filter(col => col.pureName == table.pureName).map(getColumnInfo),
|
columns: columns.rows.filter(col => col.pureName == table.pureName).map(x => getColumnInfo(x, this.driver)),
|
||||||
primaryKey: DatabaseAnalyser.extractPrimaryKeys(table, pkColumns.rows),
|
primaryKey: DatabaseAnalyser.extractPrimaryKeys(table, pkColumns.rows),
|
||||||
foreignKeys: DatabaseAnalyser.extractForeignKeys(table, fkColumns.rows),
|
foreignKeys: DatabaseAnalyser.extractForeignKeys(table, fkColumns.rows),
|
||||||
tableRowCount: table.tableRowCount,
|
tableRowCount: table.tableRowCount,
|
||||||
@@ -139,7 +154,7 @@ class Analyser extends DatabaseAnalyser {
|
|||||||
...view,
|
...view,
|
||||||
objectId: view.pureName,
|
objectId: view.pureName,
|
||||||
contentHash: _.isDate(view.modifyDate) ? view.modifyDate.toISOString() : view.modifyDate,
|
contentHash: _.isDate(view.modifyDate) ? view.modifyDate.toISOString() : view.modifyDate,
|
||||||
columns: columns.rows.filter(col => col.pureName == view.pureName).map(getColumnInfo),
|
columns: columns.rows.filter(col => col.pureName == view.pureName).map(x => getColumnInfo(x, this.driver)),
|
||||||
createSql: viewTexts[view.pureName],
|
createSql: viewTexts[view.pureName],
|
||||||
requiresFormat: true,
|
requiresFormat: true,
|
||||||
})),
|
})),
|
||||||
|
|||||||
@@ -136,6 +136,9 @@ const mysqlDriver = {
|
|||||||
...mysqlDriverBase,
|
...mysqlDriverBase,
|
||||||
engine: 'mysql@dbgate-plugin-mysql',
|
engine: 'mysql@dbgate-plugin-mysql',
|
||||||
title: 'MySQL',
|
title: 'MySQL',
|
||||||
|
__analyserInternals: {
|
||||||
|
quoteDefaultValues: true,
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
/** @type {import('dbgate-types').EngineDriver} */
|
/** @type {import('dbgate-types').EngineDriver} */
|
||||||
@@ -143,6 +146,9 @@ const mariaDriver = {
|
|||||||
...mysqlDriverBase,
|
...mysqlDriverBase,
|
||||||
engine: 'mariadb@dbgate-plugin-mysql',
|
engine: 'mariadb@dbgate-plugin-mysql',
|
||||||
title: 'MariaDB',
|
title: 'MariaDB',
|
||||||
|
__analyserInternals: {
|
||||||
|
quoteDefaultValues: false,
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
module.exports = [mysqlDriver, mariaDriver];
|
module.exports = [mysqlDriver, mariaDriver];
|
||||||
|
|||||||
Reference in New Issue
Block a user