mirror of
https://github.com/dbgate/dbgate
synced 2024-11-07 20:26:23 +00:00
fixed show master-detail
This commit is contained in:
parent
320471ecc8
commit
99a6b1bb31
@ -1,5 +1,6 @@
|
|||||||
import useFetch from './useFetch';
|
import useFetch from './useFetch';
|
||||||
import axios from './axios';
|
import axios from './axios';
|
||||||
|
import _ from 'lodash';
|
||||||
import { cacheGet, cacheSet, getCachedPromise } from './cache';
|
import { cacheGet, cacheSet, getCachedPromise } from './cache';
|
||||||
import stableStringify from 'json-stable-stringify';
|
import stableStringify from 'json-stable-stringify';
|
||||||
|
|
||||||
@ -7,6 +8,18 @@ const databaseInfoLoader = ({ conid, database }) => ({
|
|||||||
url: 'database-connections/structure',
|
url: 'database-connections/structure',
|
||||||
params: { conid, database },
|
params: { conid, database },
|
||||||
reloadTrigger: `database-structure-changed-${conid}-${database}`,
|
reloadTrigger: `database-structure-changed-${conid}-${database}`,
|
||||||
|
transform: (db) => {
|
||||||
|
const allForeignKeys = _.flatten(db.tables.map((x) => x.foreignKeys));
|
||||||
|
return {
|
||||||
|
...db,
|
||||||
|
tables: db.tables.map((table) => ({
|
||||||
|
...table,
|
||||||
|
dependencies: allForeignKeys.filter(
|
||||||
|
(x) => x.refSchemaName == table.schemaName && x.refTableName == table.pureName
|
||||||
|
),
|
||||||
|
})),
|
||||||
|
};
|
||||||
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
// const tableInfoLoader = ({ conid, database, schemaName, pureName }) => ({
|
// const tableInfoLoader = ({ conid, database, schemaName, pureName }) => ({
|
||||||
@ -58,7 +71,7 @@ const connectionListLoader = () => ({
|
|||||||
});
|
});
|
||||||
|
|
||||||
async function getCore(loader, args) {
|
async function getCore(loader, args) {
|
||||||
const { url, params, reloadTrigger } = loader(args);
|
const { url, params, reloadTrigger, transform } = loader(args);
|
||||||
const key = stableStringify({ url, ...params });
|
const key = stableStringify({ url, ...params });
|
||||||
|
|
||||||
async function doLoad() {
|
async function doLoad() {
|
||||||
@ -67,7 +80,7 @@ async function getCore(loader, args) {
|
|||||||
url,
|
url,
|
||||||
params,
|
params,
|
||||||
});
|
});
|
||||||
return resp.data;
|
return (transform || ((x) => x))(resp.data);
|
||||||
}
|
}
|
||||||
|
|
||||||
const fromCache = cacheGet(key);
|
const fromCache = cacheGet(key);
|
||||||
@ -79,7 +92,7 @@ async function getCore(loader, args) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function useCore(loader, args) {
|
function useCore(loader, args) {
|
||||||
const { url, params, reloadTrigger } = loader(args);
|
const { url, params, reloadTrigger, transform } = loader(args);
|
||||||
const cacheKey = stableStringify({ url, ...params });
|
const cacheKey = stableStringify({ url, ...params });
|
||||||
|
|
||||||
const res = useFetch({
|
const res = useFetch({
|
||||||
@ -87,6 +100,7 @@ function useCore(loader, args) {
|
|||||||
params,
|
params,
|
||||||
reloadTrigger,
|
reloadTrigger,
|
||||||
cacheKey,
|
cacheKey,
|
||||||
|
transform,
|
||||||
});
|
});
|
||||||
|
|
||||||
return res;
|
return res;
|
||||||
|
@ -13,6 +13,7 @@ export default function useFetch({
|
|||||||
defaultValue = undefined,
|
defaultValue = undefined,
|
||||||
reloadTrigger = undefined,
|
reloadTrigger = undefined,
|
||||||
cacheKey = undefined,
|
cacheKey = undefined,
|
||||||
|
transform = (x) => x,
|
||||||
...config
|
...config
|
||||||
}) {
|
}) {
|
||||||
const [value, setValue] = React.useState([defaultValue, []]);
|
const [value, setValue] = React.useState([defaultValue, []]);
|
||||||
@ -34,7 +35,7 @@ export default function useFetch({
|
|||||||
data,
|
data,
|
||||||
...config,
|
...config,
|
||||||
});
|
});
|
||||||
return resp.data;
|
return transform(resp.data);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (cacheKey) {
|
if (cacheKey) {
|
||||||
|
Loading…
Reference in New Issue
Block a user