This commit is contained in:
Jan Prochazka 2020-06-29 08:07:50 +02:00
parent abf7ad478d
commit eaaa7beaa1
5 changed files with 21 additions and 5 deletions

View File

@ -147,12 +147,12 @@ class MySqlAnalyser extends DatabaseAnalayser {
if (x.objectType == 'VIEW') return { ...x, objectTypeField: 'views' };
return null;
}),
procedureModificationsQueryData.rows.map((x) => ({
...procedureModificationsQueryData.rows.map((x) => ({
objectTypeField: 'procedures',
modifyDate: x.Modified,
pureName: x.Name,
})),
functionModificationsQueryData.rows.map((x) => ({
...functionModificationsQueryData.rows.map((x) => ({
objectTypeField: 'functions',
modifyDate: x.Modified,
pureName: x.Name,
@ -160,6 +160,10 @@ class MySqlAnalyser extends DatabaseAnalayser {
]);
// console.log('allModifications', allModifications);
// console.log(
// 'DATES',
// this.structure.procedures.map((x) => x.modifyDate)
// );
// console.log('MOD - SRC', modifications);
// console.log(
// 'MODs',
@ -176,6 +180,8 @@ class MySqlAnalyser extends DatabaseAnalayser {
// object not modified
if (obj && Math.abs(new Date(modifyDate).getTime() - new Date(obj.modifyDate).getTime()) < 1000) return null;
// console.log('MODIFICATION OF ', field, pureName, modifyDate, obj.modifyDate);
/** @type {import('@dbgate/types').DatabaseModification} */
const action = obj
? {

View File

@ -118,6 +118,16 @@ const driver = {
const analyser = new MySqlAnalyser(pool, this);
return analyser.incrementalAnalysis(structure);
},
async analyseSingleObject(pool, name, typeField = 'tables') {
const analyser = new MySqlAnalyser(pool, this);
analyser.singleObjectFilter = { ...name, typeField };
const res = await analyser.fullAnalysis();
return res.tables[0];
},
// @ts-ignore
analyseSingleTable(pool, name) {
return this.analyseSingleObject(pool, name, 'tables');
},
async listDatabases(connection) {
const { rows } = await this.query(connection, 'show databases');
return rows.map((x) => ({ name: x.Database }));

View File

@ -1,3 +1,3 @@
module.exports = `
SHOW PROCEDURE STATUS WHERE Db = '#DATABASE#'
SHOW FUNCTION STATUS WHERE Db = '#DATABASE#'
`;

View File

@ -2,7 +2,7 @@ module.exports = `
select
ROUTINE_NAME as pureName,
ROUTINE_TYPE as objectType,
LAST_ALTERED as modifyDate,
COALESCE(LAST_ALTERED, CREATED) as modifyDate,
ROUTINE_DEFINITION as createSql
from information_schema.routines
where ROUTINE_SCHEMA = '#DATABASE#' and ROUTINE_NAME =[OBJECT_NAME_CONDITION]

View File

@ -40,7 +40,7 @@ function useSqlTemplate(sqlTemplate, props) {
if (sqlTemplate == 'CREATE OBJECT') {
const objectInfo = await getSqlObjectInfo(props);
if (objectInfo) {
if (objectInfo.requiresFormat) setSql(sqlFormatter.format(objectInfo.createSql));
if (objectInfo.requiresFormat && objectInfo.createSql) setSql(sqlFormatter.format(objectInfo.createSql));
else setSql(objectInfo.createSql);
}
}