Merge branch 'master' into feature/duckdb-2

This commit is contained in:
SPRINX0\prochazka
2025-04-02 14:16:38 +02:00
committed by Nybkox
83 changed files with 1418 additions and 312 deletions

View File

@@ -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 });

View File

@@ -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,
};

View File

@@ -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'
`;

View File

@@ -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']);

View File

@@ -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 {

View File

@@ -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;