mirror of
https://github.com/DeNNiiInc/dbgate.git
synced 2026-04-23 05:46:01 +00:00
Merge branch 'master' into feature/duckdb-2
This commit is contained in:
@@ -34,7 +34,10 @@ class Analyser extends DatabaseAnalyser {
|
||||
this.feedback({ analysingMessage: 'Loading columns' });
|
||||
const columns = await this.analyserQuery('columns', ['tables', 'views']);
|
||||
this.feedback({ analysingMessage: 'Loading views' });
|
||||
const views = await this.analyserQuery('views', ['views']);
|
||||
let views = await this.analyserQuery('views', ['views']);
|
||||
if (views?.isError) {
|
||||
views = await this.analyserQuery('viewsNoDefinition', ['views']);
|
||||
}
|
||||
|
||||
const res = {
|
||||
tables: tables.rows.map((table) => ({
|
||||
@@ -64,7 +67,7 @@ class Analyser extends DatabaseAnalyser {
|
||||
...col,
|
||||
...extractDataType(col.dataType),
|
||||
})),
|
||||
createSql: `CREATE VIEW "${view.pureName}"\nAS\n${view.viewDefinition}`,
|
||||
createSql: view.viewDefinition ? `CREATE VIEW "${view.pureName}"\nAS\n${view.viewDefinition}` : '',
|
||||
})),
|
||||
};
|
||||
this.feedback({ analysingMessage: null });
|
||||
|
||||
@@ -1,11 +1,13 @@
|
||||
const columns = require('./columns');
|
||||
const tables = require('./tables');
|
||||
const views = require('./views');
|
||||
const viewsNoDefinition = require('./viewsNoDefinition');
|
||||
const tableModifications = require('./tableModifications');
|
||||
|
||||
module.exports = {
|
||||
columns,
|
||||
tables,
|
||||
views,
|
||||
viewsNoDefinition,
|
||||
tableModifications,
|
||||
};
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
module.exports = `
|
||||
select
|
||||
tables.name as "pureName",
|
||||
tables.uuid as "objectId",
|
||||
tables.metadata_modification_time as "contentHash"
|
||||
from system.tables
|
||||
where tables.database='#DATABASE#' and tables.uuid =OBJECT_ID_CONDITION and tables.engine = 'View'
|
||||
`;
|
||||
@@ -164,7 +164,7 @@ class Analyser extends DatabaseAnalyser {
|
||||
this.feedback({ analysingMessage: 'Loading triggers' });
|
||||
const triggers = await this.analyserQuery('triggers');
|
||||
|
||||
this.feedback({ analysingMessage: 'Loading scehduler events' });
|
||||
this.feedback({ analysingMessage: 'Loading scheduler events' });
|
||||
const schedulerEvents = await this.analyserQuery('schedulerEvents');
|
||||
|
||||
const uniqueNames = await this.analyserQuery('uniqueNames', ['tables']);
|
||||
|
||||
@@ -81,12 +81,25 @@ function splitCommandLine(str) {
|
||||
const driver = {
|
||||
...driverBase,
|
||||
analyserClass: Analyser,
|
||||
async connect({ server, port, user, password, database, useDatabaseUrl, databaseUrl, treeKeySeparator, ssl }) {
|
||||
async connect({
|
||||
server,
|
||||
port,
|
||||
user,
|
||||
password,
|
||||
database,
|
||||
useDatabaseUrl,
|
||||
databaseUrl,
|
||||
treeKeySeparator,
|
||||
ssl,
|
||||
skipSetName,
|
||||
}) {
|
||||
let db = 0;
|
||||
let client;
|
||||
if (useDatabaseUrl) {
|
||||
client = new Redis(databaseUrl);
|
||||
await client.client('SETNAME', 'dbgate');
|
||||
if (!skipSetName) {
|
||||
await client.client('SETNAME', 'dbgate');
|
||||
}
|
||||
} else {
|
||||
if (_.isString(database) && database.startsWith('db')) db = parseInt(database.substring(2));
|
||||
if (_.isNumber(database)) db = database;
|
||||
@@ -96,15 +109,18 @@ const driver = {
|
||||
passphrase: ssl.password,
|
||||
};
|
||||
}
|
||||
client = new Redis({
|
||||
const connectionOptions = {
|
||||
host: server,
|
||||
port,
|
||||
username: user,
|
||||
password,
|
||||
db,
|
||||
connectionName: 'dbgate',
|
||||
tls: ssl,
|
||||
});
|
||||
};
|
||||
if (!skipSetName) {
|
||||
connectionOptions.connectionName = 'dbgate';
|
||||
}
|
||||
client = new Redis(connectionOptions);
|
||||
}
|
||||
|
||||
return {
|
||||
|
||||
@@ -82,6 +82,16 @@ const driver = {
|
||||
}
|
||||
return ['server', 'port', 'user', 'password', 'isReadOnly', 'treeKeySeparator'].includes(field);
|
||||
},
|
||||
|
||||
getAdvancedConnectionFields() {
|
||||
return [
|
||||
{
|
||||
type: 'checkbox',
|
||||
name: 'skipSetName',
|
||||
label: 'Skip SETNAME instruction',
|
||||
},
|
||||
];
|
||||
},
|
||||
};
|
||||
|
||||
module.exports = driver;
|
||||
|
||||
Reference in New Issue
Block a user