browse view data

This commit is contained in:
Jan Prochazka
2020-04-12 18:44:59 +02:00
parent ea6c31187b
commit 4bc252fdd2
20 changed files with 497 additions and 322 deletions

View File

@@ -1,15 +1,9 @@
const _ = require('lodash');
const fp = require('lodash/fp');
const uuidv1 = require('uuid/v1');
const connections = require('./connections');
const socket = require('../utility/socket');
const { fork } = require('child_process');
const DatabaseAnalyser = require('@dbgate/engines/default/DatabaseAnalyser');
function pickObjectNames(array) {
return _.sortBy(array, (x) => `${x.schemaName}.${x.pureName}`).map(fp.pick(['pureName', 'schemaName']));
}
module.exports = {
/** @type {import('@dbgate/types').OpenedDatabaseConnection[]} */
opened: [],
@@ -62,19 +56,6 @@ module.exports = {
return promise;
},
listObjects_meta: 'get',
async listObjects({ conid, database }) {
const opened = await this.ensureOpened(conid, database);
const types = ['tables', 'views', 'procedures', 'functions', 'triggers'];
return types.reduce(
(res, type) => ({
...res,
[type]: pickObjectNames(opened.structure[type]),
}),
{}
);
},
queryData_meta: 'post',
async queryData({ conid, database, sql }) {
console.log(`Processing query, conid=${conid}, database=${database}, sql=${sql}`);

View File

@@ -0,0 +1,47 @@
const _ = require('lodash');
const fp = require('lodash/fp');
const databaseConnections = require('./databaseConnections');
function pickObjectNames(array) {
return _.sortBy(array, (x) => `${x.schemaName}.${x.pureName}`).map(fp.pick(['pureName', 'schemaName']));
}
module.exports = {
// tableData_meta: 'get',
// async tableData({ conid, database, schemaName, pureName }) {
// const opened = await databaseConnections.ensureOpened(conid, database);
// const res = await databaseConnections.sendRequest(opened, { msgtype: 'tableData', schemaName, pureName });
// return res;
// },
listObjects_meta: 'get',
async listObjects({ conid, database }) {
const opened = await databaseConnections.ensureOpened(conid, database);
const types = ['tables', 'views', 'procedures', 'functions', 'triggers'];
return types.reduce(
(res, type) => ({
...res,
[type]: pickObjectNames(opened.structure[type]),
}),
{}
);
},
tableInfo_meta: 'get',
async tableInfo({ conid, database, schemaName, pureName }) {
const opened = await databaseConnections.ensureOpened(conid, database);
const table = opened.structure.tables.find((x) => x.pureName == pureName && x.schemaName == schemaName);
const allForeignKeys = _.flatten(opened.structure.tables.map((x) => x.foreignKeys));
return {
...table,
dependencies: allForeignKeys.filter((x) => x.refSchemaName == schemaName && x.refTableName == pureName),
};
},
viewInfo_meta: 'get',
async viewInfo({ conid, database, schemaName, pureName }) {
const opened = await databaseConnections.ensureOpened(conid, database);
const view = opened.structure.views.find((x) => x.pureName == pureName && x.schemaName == schemaName);
return view;
},
};

View File

@@ -1,22 +0,0 @@
const _ = require('lodash');
const databaseConnections = require('./databaseConnections');
module.exports = {
// tableData_meta: 'get',
// async tableData({ conid, database, schemaName, pureName }) {
// const opened = await databaseConnections.ensureOpened(conid, database);
// const res = await databaseConnections.sendRequest(opened, { msgtype: 'tableData', schemaName, pureName });
// return res;
// },
tableInfo_meta: 'get',
async tableInfo({ conid, database, schemaName, pureName }) {
const opened = await databaseConnections.ensureOpened(conid, database);
const table = opened.structure.tables.find(x => x.pureName == pureName && x.schemaName == schemaName);
const allForeignKeys = _.flatten(opened.structure.tables.map(x => x.foreignKeys));
return {
...table,
dependencies: allForeignKeys.filter(x => x.refSchemaName == schemaName && x.refTableName == pureName),
};
},
};

View File

@@ -12,7 +12,7 @@ const socket = require('./utility/socket');
const connections = require('./controllers/connections');
const serverConnections = require('./controllers/serverConnections');
const databaseConnections = require('./controllers/databaseConnections');
const tables = require('./controllers/tables');
const metadata = require('./controllers/metadata');
const sessions = require('./controllers/sessions');
const jsldata = require('./controllers/jsldata');
@@ -30,7 +30,7 @@ function start(argument = null) {
useController(app, '/connections', connections);
useController(app, '/server-connections', serverConnections);
useController(app, '/database-connections', databaseConnections);
useController(app, '/tables', tables);
useController(app, '/metadata', metadata);
useController(app, '/sessions', sessions);
useController(app, '/jsldata', jsldata);