diff --git a/package.json b/package.json
index fbd60a661..77ea51284 100644
--- a/package.json
+++ b/package.json
@@ -7,6 +7,7 @@
"scripts": {
"start:api": "yarn workspace dbgate-api start",
"start:api:portal": "yarn workspace dbgate-api start:portal",
+ "start:api:covid": "yarn workspace dbgate-api start:covid",
"start:web": "yarn workspace dbgate-web start",
"start:sqltree": "yarn workspace dbgate-sqltree start",
"start:tools": "yarn workspace dbgate-tools start",
diff --git a/packages/api/.covid-env b/packages/api/.covid-env
new file mode 100644
index 000000000..d8b4c69f1
--- /dev/null
+++ b/packages/api/.covid-env
@@ -0,0 +1,10 @@
+CONNECTIONS=mysql
+
+LABEL_mysql=MySql
+SERVER_mysql=dbgate.org
+USER_mysql=reader
+PASSWORD_mysql=CovidReader2020
+PORT_mysql=3326
+ENGINE_mysql=mysql@dbgate-plugin-mysql
+SINGLE_CONNECTION=mysql
+SINGLE_DATABASE=covid
diff --git a/packages/api/package.json b/packages/api/package.json
index 5edd9493f..f62cb079e 100644
--- a/packages/api/package.json
+++ b/packages/api/package.json
@@ -45,6 +45,7 @@
"scripts": {
"start": "nodemon src/index.js",
"start:portal": "env-cmd nodemon src/index.js",
+ "start:covid": "env-cmd -f .covid-env nodemon src/index.js",
"ts": "tsc",
"build": "webpack"
},
diff --git a/packages/api/src/controllers/config.js b/packages/api/src/controllers/config.js
index c4ddb3a19..c288d870f 100644
--- a/packages/api/src/controllers/config.js
+++ b/packages/api/src/controllers/config.js
@@ -15,6 +15,13 @@ module.exports = {
runAsPortal: !!process.env.CONNECTIONS,
toolbar,
startupPages,
+ singleDatabase:
+ process.env.SINGLE_CONNECTION && process.env.SINGLE_DATABASE
+ ? {
+ conid: process.env.SINGLE_CONNECTION,
+ database: process.env.SINGLE_DATABASE,
+ }
+ : null,
};
},
};
diff --git a/packages/web/src/utility/globalState.js b/packages/web/src/utility/globalState.js
index 25a6c61a1..8975f6528 100644
--- a/packages/web/src/utility/globalState.js
+++ b/packages/web/src/utility/globalState.js
@@ -1,7 +1,7 @@
import _ from 'lodash';
import React from 'react';
import useStorage from './useStorage';
-import { useConnectionInfo, useConfig } from './metadataLoaders';
+import { useConnectionInfo, useConfig, getConnectionInfo } from './metadataLoaders';
import usePrevious from './usePrevious';
import useNewQuery from '../query/useNewQuery';
import useShowModal from '../modals/showModal';
@@ -48,11 +48,11 @@ function createStorageState(storageKey, defaultValue) {
const [CurrentWidgetProvider, useCurrentWidget, useSetCurrentWidget] = createGlobalState('database');
export { CurrentWidgetProvider, useCurrentWidget, useSetCurrentWidget };
-const [CurrentDatabaseProvider, useCurrentDatabase, useSetCurrentDatabaseCore] = createGlobalState(null);
+const [CurrentDatabaseProvider, useCurrentDatabaseCore, useSetCurrentDatabaseCore] = createGlobalState(null);
function useSetCurrentDatabase() {
const setDb = useSetCurrentDatabaseCore();
- const db = useCurrentDatabase();
+ const db = useCurrentDatabaseCore();
return (value) => {
if (_.get(db, 'name') !== _.get(value, 'name') || _.get(db, 'connection._id') != _.get(value, 'connection._id')) {
setDb(value);
@@ -60,6 +60,33 @@ function useSetCurrentDatabase() {
};
}
+function useCurrentDatabase() {
+ const config = useConfig();
+ const db = useCurrentDatabaseCore();
+
+ const [connection, setConnection] = React.useState(null);
+ const loadSingleConnection = async () => {
+ if (config && config.singleDatabase) {
+ const conn = await getConnectionInfo({ conid: config.singleDatabase.conid });
+ setConnection(conn);
+ }
+ };
+ React.useEffect(() => {
+ loadSingleConnection();
+ }, [config]);
+
+ if (config && config.singleDatabase) {
+ if (connection) {
+ return {
+ connection,
+ name: config.singleDatabase.database,
+ };
+ }
+ return null;
+ }
+ return db;
+}
+
export { CurrentDatabaseProvider, useCurrentDatabase, useSetCurrentDatabase };
const [OpenedTabsProvider, useOpenedTabs, useSetOpenedTabs] = createStorageState('openedTabs', []);
diff --git a/packages/web/src/widgets/DatabaseWidget.js b/packages/web/src/widgets/DatabaseWidget.js
index 900b0cae4..cc3ba1b68 100644
--- a/packages/web/src/widgets/DatabaseWidget.js
+++ b/packages/web/src/widgets/DatabaseWidget.js
@@ -14,6 +14,7 @@ import {
useServerStatus,
useDatabaseStatus,
useDatabaseInfo,
+ useConfig,
} from '../utility/metadataLoaders';
import {
SearchBoxWrapper,
@@ -131,7 +132,11 @@ function SqlObjectListWrapper() {
const db = useCurrentDatabase();
if (!db) {
- return ;
+ return (
+
+
+
+ );
}
const { name, connection } = db;
@@ -141,11 +146,14 @@ function SqlObjectListWrapper() {
}
export default function DatabaseWidget() {
+ const config = useConfig();
return (
-
-
-
+ {!config.singleDatabase && (
+
+
+
+ )}