diff --git a/packages/api/src/controllers/databaseConnections.js b/packages/api/src/controllers/databaseConnections.js
index b1855ac50..dac7756a9 100644
--- a/packages/api/src/controllers/databaseConnections.js
+++ b/packages/api/src/controllers/databaseConnections.js
@@ -107,7 +107,10 @@ module.exports = {
if (existing) {
existing.subprocess.send({ msgtype: 'ping' });
}
- return { status: 'ok' };
+ return {
+ status: 'ok',
+ connectionStatus: existing ? existing.status : null,
+ };
},
refresh_meta: 'post',
diff --git a/packages/api/src/proc/databaseConnectionProcess.js b/packages/api/src/proc/databaseConnectionProcess.js
index b5f0c6ee3..2ae747270 100644
--- a/packages/api/src/proc/databaseConnectionProcess.js
+++ b/packages/api/src/proc/databaseConnectionProcess.js
@@ -121,6 +121,7 @@ function start() {
setInterval(() => {
const time = new Date().getTime();
if (time - lastPing > 60 * 1000) {
+ console.log('Database connection not alive, exiting');
process.exit(0);
}
}, 60 * 1000);
diff --git a/packages/web/src/appobj/AppObjectList.js b/packages/web/src/appobj/AppObjectList.js
index 7883e0b5c..cbf5ffeea 100644
--- a/packages/web/src/appobj/AppObjectList.js
+++ b/packages/web/src/appobj/AppObjectList.js
@@ -37,6 +37,7 @@ function AppObjectListItem({
isExpandable,
SubItems,
getCommonProps,
+ expandOnClick,
}) {
const [isExpanded, setIsExpanded] = React.useState(false);
@@ -51,12 +52,22 @@ function AppObjectListItem({
let commonProps = {
prefix: SubItems ? (
- {expandable ? : }
+ {expandable ? (
+ {
+ setIsExpanded(v => !v);
+ e.stopPropagation();
+ }}
+ />
+ ) : (
+
+ )}
) : null,
};
- if (SubItems) {
+ if (SubItems && expandOnClick) {
commonProps.onClick2 = () => setIsExpanded(v => !v);
}
if (onObjectClick) {
@@ -107,6 +118,7 @@ export function AppObjectList({
groupOrdered = undefined,
isExpandable = undefined,
getCommonProps = undefined,
+ expandOnClick = false,
}) {
const createComponent = data => (
);
diff --git a/packages/web/src/appobj/DatabaseObjectAppObject.js b/packages/web/src/appobj/DatabaseObjectAppObject.js
index 73e08282e..1b1ca8b19 100644
--- a/packages/web/src/appobj/DatabaseObjectAppObject.js
+++ b/packages/web/src/appobj/DatabaseObjectAppObject.js
@@ -12,6 +12,7 @@ import { findEngineDriver } from 'dbgate-tools';
import useExtensions from '../utility/useExtensions';
import useOpenNewTab from '../utility/useOpenNewTab';
import uuidv1 from 'uuid/v1';
+import { AppObjectList } from './AppObjectList';
const icons = {
tables: 'img table',
diff --git a/packages/web/src/appobj/SubColumnParamList.js b/packages/web/src/appobj/SubColumnParamList.js
new file mode 100644
index 000000000..4ececc033
--- /dev/null
+++ b/packages/web/src/appobj/SubColumnParamList.js
@@ -0,0 +1,33 @@
+import { findForeignKeyForColumn } from 'dbgate-tools';
+import React from 'react';
+import { getColumnIcon } from '../datagrid/ColumnLabel';
+import { AppObjectCore } from './AppObjectCore';
+import { AppObjectList } from './AppObjectList';
+
+function ColumnAppObject({ data, commonProps }) {
+ const { columnName, dataType } = data;
+ return (
+
+ );
+}
+ColumnAppObject.extractKey = ({ columnName }) => columnName;
+
+export default function SubColumnParamList({ data }) {
+ const { columns } = data;
+
+ return (
+ ({
+ ...col,
+ foreignKey: findForeignKeyForColumn(data, col),
+ }))}
+ AppObjectComponent={ColumnAppObject}
+ />
+ );
+}
diff --git a/packages/web/src/datagrid/ColumnLabel.js b/packages/web/src/datagrid/ColumnLabel.js
index 1cda97227..5fdc2b983 100644
--- a/packages/web/src/datagrid/ColumnLabel.js
+++ b/packages/web/src/datagrid/ColumnLabel.js
@@ -9,11 +9,16 @@ const Label = styled.span`
white-space: nowrap;
`;
+export function getColumnIcon(column, forceIcon = false) {
+ if (column.autoIncrement) return 'img autoincrement';
+ if (column.foreignKey) return 'img foreign-key';
+ if (forceIcon) return 'img column';
+ return null;
+}
+
/** @param column {import('dbgate-datalib').DisplayColumn|import('dbgate-types').ColumnInfo} */
export default function ColumnLabel(column) {
- let icon = column.forceIcon ? 'img column' : null;
- if (column.autoIncrement) icon = 'img autoincrement';
- if (column.foreignKey) icon = 'img foreign-key';
+ const icon = getColumnIcon(column, column.forceIcon);
return (