diff --git a/packages/web/src/appobj/tableAppObject.js b/packages/web/src/appobj/tableAppObject.js
index fbd644d29..0effe57cf 100644
--- a/packages/web/src/appobj/tableAppObject.js
+++ b/packages/web/src/appobj/tableAppObject.js
@@ -7,7 +7,7 @@ import fullDisplayName from '../utility/fullDisplayName';
import { filterName } from '@dbgate/datalib';
async function openTableDetail(setOpenedTabs, tabComponent, { schemaName, pureName, conid, database }) {
- const connection = await getConnectionInfo(conid);
+ const connection = await getConnectionInfo({ conid });
const tooltip = `${connection.displayName || connection.server}\n${database}\n${fullDisplayName({
schemaName,
pureName,
diff --git a/packages/web/src/appobj/viewAppObject.js b/packages/web/src/appobj/viewAppObject.js
index 95fd32cc1..0629e9cc8 100644
--- a/packages/web/src/appobj/viewAppObject.js
+++ b/packages/web/src/appobj/viewAppObject.js
@@ -7,7 +7,7 @@ import fullDisplayName from '../utility/fullDisplayName';
import { filterName } from '@dbgate/datalib';
async function openViewDetail(setOpenedTabs, tabComponent, { schemaName, pureName, conid, database }) {
- const connection = await getConnectionInfo(conid);
+ const connection = await getConnectionInfo({ conid });
const tooltip = `${connection.displayName || connection.server}\n${database}\n${fullDisplayName({
schemaName,
pureName,
diff --git a/packages/web/src/tabs/QueryTab.js b/packages/web/src/tabs/QueryTab.js
index 193f7e32f..4d76f71d0 100644
--- a/packages/web/src/tabs/QueryTab.js
+++ b/packages/web/src/tabs/QueryTab.js
@@ -47,7 +47,7 @@ export default function QueryTab({ tabid, conid, database, tabVisible, toolbarPo
const editorRef = React.useRef(null);
useUpdateDatabaseForTab(tabVisible, conid, database);
- const connection = useConnectionInfo(conid);
+ const connection = useConnectionInfo({ conid });
const handleChange = (text) => {
if (text != null) queryTextRef.current = text;
diff --git a/packages/web/src/tabs/TableCreateScriptTab.js b/packages/web/src/tabs/TableCreateScriptTab.js
index 242702355..0c8482896 100644
--- a/packages/web/src/tabs/TableCreateScriptTab.js
+++ b/packages/web/src/tabs/TableCreateScriptTab.js
@@ -5,7 +5,7 @@ import SqlEditor from '../sqleditor/SqlEditor';
export default function TableCreateScriptTab({ conid, database, schemaName, pureName }) {
const tableInfo = useTableInfo({ conid, database, schemaName, pureName });
- const connnection = useConnectionInfo(conid);
+ const connnection = useConnectionInfo({ conid });
if (!connnection || !tableInfo) return null;
// console.log(tableInfo);
diff --git a/packages/web/src/tabs/TableDataTab.js b/packages/web/src/tabs/TableDataTab.js
index 99386c92b..3579f4862 100644
--- a/packages/web/src/tabs/TableDataTab.js
+++ b/packages/web/src/tabs/TableDataTab.js
@@ -17,7 +17,8 @@ export default function TableDataTab({ conid, database, schemaName, pureName, ta
const [changeSetState, dispatchChangeSet] = useUndoReducer(createChangeSet());
useUpdateDatabaseForTab(tabVisible, conid, database);
- const connection = useConnectionInfo(conid);
+ const connection = useConnectionInfo({ conid });
+ console.log('GOT CONNECTION', connection);
// usePropsCompare({ tableInfo, connection, config, cache });
diff --git a/packages/web/src/tabs/ViewCreateScriptTab.js b/packages/web/src/tabs/ViewCreateScriptTab.js
index 2f531c387..422608a69 100644
--- a/packages/web/src/tabs/ViewCreateScriptTab.js
+++ b/packages/web/src/tabs/ViewCreateScriptTab.js
@@ -4,7 +4,7 @@ import SqlEditor from '../sqleditor/SqlEditor';
export default function ViewCreateScriptTab({ conid, database, schemaName, pureName }) {
const viewInfo = useViewInfo({ conid, database, schemaName, pureName });
- const connnection = useConnectionInfo(conid);
+ const connnection = useConnectionInfo({ conid });
if (!connnection || !viewInfo) return null;
return ;
diff --git a/packages/web/src/tabs/ViewDataTab.js b/packages/web/src/tabs/ViewDataTab.js
index 5097d378f..c9f33ea34 100644
--- a/packages/web/src/tabs/ViewDataTab.js
+++ b/packages/web/src/tabs/ViewDataTab.js
@@ -17,7 +17,7 @@ export default function ViewDataTab({ conid, database, schemaName, pureName, tab
const [changeSetState, dispatchChangeSet] = useUndoReducer(createChangeSet());
useUpdateDatabaseForTab(tabVisible, conid, database);
- const connection = useConnectionInfo(conid);
+ const connection = useConnectionInfo({ conid });
// usePropsCompare({ tableInfo, connection, config, cache });
diff --git a/packages/web/src/utility/globalState.js b/packages/web/src/utility/globalState.js
index c64c33d0f..842d256b1 100644
--- a/packages/web/src/utility/globalState.js
+++ b/packages/web/src/utility/globalState.js
@@ -63,7 +63,7 @@ const [OpenedTabsProvider, useOpenedTabs, useSetOpenedTabs] = createStorageState
export { OpenedTabsProvider, useOpenedTabs, useSetOpenedTabs };
export function useUpdateDatabaseForTab(tabVisible, conid, database) {
- const connection = useConnectionInfo(conid);
+ const connection = useConnectionInfo({ conid });
const setDb = useSetCurrentDatabase();
const previousTabVisible = usePrevious(!!(tabVisible && connection));
diff --git a/packages/web/src/utility/metadataLoaders.js b/packages/web/src/utility/metadataLoaders.js
index a1188cd67..22af3e17c 100644
--- a/packages/web/src/utility/metadataLoaders.js
+++ b/packages/web/src/utility/metadataLoaders.js
@@ -9,6 +9,18 @@ const tableInfoLoader = ({ conid, database, schemaName, pureName }) => ({
reloadTrigger: `database-structure-changed-${conid}-${database}`,
});
+const viewInfoLoader = ({ conid, database, schemaName, pureName }) => ({
+ url: 'metadata/view-info',
+ params: { conid, database, schemaName, pureName },
+ reloadTrigger: `database-structure-changed-${conid}-${database}`,
+});
+
+const connectionInfoLoader = ({ conid }) => ({
+ url: 'connections/get',
+ params: { conid },
+ reloadTrigger: 'connection-list-changed',
+});
+
async function getCore(loader, args) {
const { url, params, reloadTrigger } = loader(args);
const key = stableStringify({ url, ...params });
@@ -53,55 +65,42 @@ export function getTableInfo(args) {
export function useTableInfo(args) {
return useCore(tableInfoLoader, args);
}
-// export const useTableInfo = createUse(tableInfoLoader);
-// export async function getTableInfo({ conid, database, schemaName, pureName }) {
+/** @returns {Promise} */
+export function getViewInfo(args) {
+ return getCore(viewInfoLoader, args);
+}
+
+/** @returns {import('@dbgate/types').ViewInfo} */
+export function useViewInfo(args) {
+ return useCore(viewInfoLoader, args);
+}
+
+/** @returns {Promise} */
+export function getConnectionInfo(args) {
+ return getCore(connectionInfoLoader, args);
+}
+
+/** @returns {import('@dbgate/types').StoredConnection} */
+export function useConnectionInfo(args) {
+ return useCore(connectionInfoLoader, args);
+}
+
+// export function useConnectionInfo(conid) {
+// /** @type {import('@dbgate/types').StoredConnection} */
+// const connection = useFetch({
+// params: { conid },
+// url: 'connections/get',
+// });
+// return connection;
+// }
+// export async function getConnectionInfo(conid) {
// const resp = await axios.request({
// method: 'get',
-// url: 'metadata/table-info',
-// params: { conid, database, schemaName, pureName },
+// params: { conid },
+// url: 'connections/get',
// });
-// /** @type {import('@dbgate/types').TableInfo} */
+// /** @type {import('@dbgate/types').StoredConnection} */
// const res = resp.data;
// return res;
// }
-
-// export function useTableInfo({ conid, database, schemaName, pureName }) {
-// /** @type {import('@dbgate/types').TableInfo} */
-// const tableInfo = useFetch({
-// url: 'metadata/table-info',
-// params: { conid, database, schemaName, pureName },
-// reloadTrigger: `database-structure-changed-${conid}-${database}`,
-// });
-// return tableInfo;
-// }
-
-export function useViewInfo({ conid, database, schemaName, pureName }) {
- /** @type {import('@dbgate/types').ViewInfo} */
- const viewInfo = useFetch({
- url: 'metadata/view-info',
- params: { conid, database, schemaName, pureName },
- reloadTrigger: `database-structure-changed-${conid}-${database}`,
- });
- return viewInfo;
-}
-
-export function useConnectionInfo(conid) {
- /** @type {import('@dbgate/types').StoredConnection} */
- const connection = useFetch({
- params: { conid },
- url: 'connections/get',
- });
- return connection;
-}
-
-export async function getConnectionInfo(conid) {
- const resp = await axios.request({
- method: 'get',
- params: { conid },
- url: 'connections/get',
- });
- /** @type {import('@dbgate/types').StoredConnection} */
- const res = resp.data;
- return res;
-}
diff --git a/packages/web/src/utility/useFetch.js b/packages/web/src/utility/useFetch.js
index 7fb2c9c16..4d300a6cd 100644
--- a/packages/web/src/utility/useFetch.js
+++ b/packages/web/src/utility/useFetch.js
@@ -38,26 +38,19 @@ export default function useFetch({
if (cacheKey) {
const fromCache = cacheGet(cacheKey);
- if (fromCache) return fromCache;
- const res = await getCachedPromise(cacheKey, doLoad);
- setValue([res, loadedIndicators]);
- cacheSet(cacheKey, res, reloadTrigger);
+ if (fromCache) {
+ setValue([fromCache, loadedIndicators]);
+ } else {
+ const res = await getCachedPromise(cacheKey, doLoad);
+ cacheSet(cacheKey, res, reloadTrigger);
+ setValue([res, loadedIndicators]);
+ }
} else {
const res = await doLoad();
setValue([res, loadedIndicators]);
}
}
- // React.useEffect(() => {
- // loadValue(indicators);
- // if (reloadTrigger && socket) {
- // socket.on(reloadTrigger, handleReload);
- // return () => {
- // socket.off(reloadTrigger, handleReload);
- // };
- // }
- // }, [...indicators, socket]);
-
React.useEffect(() => {
loadValue(indicators);
}, [...indicators]);