mirror of
https://github.com/DeNNiiInc/dbgate.git
synced 2026-04-30 01:03:58 +00:00
single database configuration
This commit is contained in:
@@ -7,6 +7,7 @@
|
|||||||
"scripts": {
|
"scripts": {
|
||||||
"start:api": "yarn workspace dbgate-api start",
|
"start:api": "yarn workspace dbgate-api start",
|
||||||
"start:api:portal": "yarn workspace dbgate-api start:portal",
|
"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:web": "yarn workspace dbgate-web start",
|
||||||
"start:sqltree": "yarn workspace dbgate-sqltree start",
|
"start:sqltree": "yarn workspace dbgate-sqltree start",
|
||||||
"start:tools": "yarn workspace dbgate-tools start",
|
"start:tools": "yarn workspace dbgate-tools start",
|
||||||
|
|||||||
10
packages/api/.covid-env
Normal file
10
packages/api/.covid-env
Normal file
@@ -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
|
||||||
@@ -45,6 +45,7 @@
|
|||||||
"scripts": {
|
"scripts": {
|
||||||
"start": "nodemon src/index.js",
|
"start": "nodemon src/index.js",
|
||||||
"start:portal": "env-cmd 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",
|
"ts": "tsc",
|
||||||
"build": "webpack"
|
"build": "webpack"
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -15,6 +15,13 @@ module.exports = {
|
|||||||
runAsPortal: !!process.env.CONNECTIONS,
|
runAsPortal: !!process.env.CONNECTIONS,
|
||||||
toolbar,
|
toolbar,
|
||||||
startupPages,
|
startupPages,
|
||||||
|
singleDatabase:
|
||||||
|
process.env.SINGLE_CONNECTION && process.env.SINGLE_DATABASE
|
||||||
|
? {
|
||||||
|
conid: process.env.SINGLE_CONNECTION,
|
||||||
|
database: process.env.SINGLE_DATABASE,
|
||||||
|
}
|
||||||
|
: null,
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import _ from 'lodash';
|
import _ from 'lodash';
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import useStorage from './useStorage';
|
import useStorage from './useStorage';
|
||||||
import { useConnectionInfo, useConfig } from './metadataLoaders';
|
import { useConnectionInfo, useConfig, getConnectionInfo } from './metadataLoaders';
|
||||||
import usePrevious from './usePrevious';
|
import usePrevious from './usePrevious';
|
||||||
import useNewQuery from '../query/useNewQuery';
|
import useNewQuery from '../query/useNewQuery';
|
||||||
import useShowModal from '../modals/showModal';
|
import useShowModal from '../modals/showModal';
|
||||||
@@ -48,11 +48,11 @@ function createStorageState(storageKey, defaultValue) {
|
|||||||
const [CurrentWidgetProvider, useCurrentWidget, useSetCurrentWidget] = createGlobalState('database');
|
const [CurrentWidgetProvider, useCurrentWidget, useSetCurrentWidget] = createGlobalState('database');
|
||||||
export { CurrentWidgetProvider, useCurrentWidget, useSetCurrentWidget };
|
export { CurrentWidgetProvider, useCurrentWidget, useSetCurrentWidget };
|
||||||
|
|
||||||
const [CurrentDatabaseProvider, useCurrentDatabase, useSetCurrentDatabaseCore] = createGlobalState(null);
|
const [CurrentDatabaseProvider, useCurrentDatabaseCore, useSetCurrentDatabaseCore] = createGlobalState(null);
|
||||||
|
|
||||||
function useSetCurrentDatabase() {
|
function useSetCurrentDatabase() {
|
||||||
const setDb = useSetCurrentDatabaseCore();
|
const setDb = useSetCurrentDatabaseCore();
|
||||||
const db = useCurrentDatabase();
|
const db = useCurrentDatabaseCore();
|
||||||
return (value) => {
|
return (value) => {
|
||||||
if (_.get(db, 'name') !== _.get(value, 'name') || _.get(db, 'connection._id') != _.get(value, 'connection._id')) {
|
if (_.get(db, 'name') !== _.get(value, 'name') || _.get(db, 'connection._id') != _.get(value, 'connection._id')) {
|
||||||
setDb(value);
|
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 };
|
export { CurrentDatabaseProvider, useCurrentDatabase, useSetCurrentDatabase };
|
||||||
|
|
||||||
const [OpenedTabsProvider, useOpenedTabs, useSetOpenedTabs] = createStorageState('openedTabs', []);
|
const [OpenedTabsProvider, useOpenedTabs, useSetOpenedTabs] = createStorageState('openedTabs', []);
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ import {
|
|||||||
useServerStatus,
|
useServerStatus,
|
||||||
useDatabaseStatus,
|
useDatabaseStatus,
|
||||||
useDatabaseInfo,
|
useDatabaseInfo,
|
||||||
|
useConfig,
|
||||||
} from '../utility/metadataLoaders';
|
} from '../utility/metadataLoaders';
|
||||||
import {
|
import {
|
||||||
SearchBoxWrapper,
|
SearchBoxWrapper,
|
||||||
@@ -131,7 +132,11 @@ function SqlObjectListWrapper() {
|
|||||||
const db = useCurrentDatabase();
|
const db = useCurrentDatabase();
|
||||||
|
|
||||||
if (!db) {
|
if (!db) {
|
||||||
return <ErrorInfo message="Database not selected" icon="img alert" />;
|
return (
|
||||||
|
<WidgetsInnerContainer>
|
||||||
|
<ErrorInfo message="Database not selected" icon="img alert" />
|
||||||
|
</WidgetsInnerContainer>
|
||||||
|
);
|
||||||
}
|
}
|
||||||
const { name, connection } = db;
|
const { name, connection } = db;
|
||||||
|
|
||||||
@@ -141,11 +146,14 @@ function SqlObjectListWrapper() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export default function DatabaseWidget() {
|
export default function DatabaseWidget() {
|
||||||
|
const config = useConfig();
|
||||||
return (
|
return (
|
||||||
<WidgetColumnBar>
|
<WidgetColumnBar>
|
||||||
<WidgetColumnBarItem title="Connections" name="connections" height="50%">
|
{!config.singleDatabase && (
|
||||||
<ConnectionList />
|
<WidgetColumnBarItem title="Connections" name="connections" height="50%">
|
||||||
</WidgetColumnBarItem>
|
<ConnectionList />
|
||||||
|
</WidgetColumnBarItem>
|
||||||
|
)}
|
||||||
<WidgetColumnBarItem title="Tables, views, functions" name="dbObjects">
|
<WidgetColumnBarItem title="Tables, views, functions" name="dbObjects">
|
||||||
<SqlObjectListWrapper />
|
<SqlObjectListWrapper />
|
||||||
</WidgetColumnBarItem>
|
</WidgetColumnBarItem>
|
||||||
|
|||||||
Reference in New Issue
Block a user