Fix update remote field metadata (#5638)
Closes #5610. & update fetch-policy when fetching database on the remote databases show page to get freshest status.
This commit is contained in:
@ -1,4 +1,4 @@
|
||||
import { useQuery } from '@apollo/client';
|
||||
import { useQuery, WatchQueryFetchPolicy } from '@apollo/client';
|
||||
|
||||
import { GET_ONE_DATABASE_CONNECTION } from '@/databases/graphql/queries/findOneDatabaseConnection';
|
||||
import { getForeignDataWrapperType } from '@/databases/utils/getForeignDataWrapperType';
|
||||
@ -12,16 +12,20 @@ type UseGetDatabaseConnectionParams = {
|
||||
databaseKey: string;
|
||||
connectionId: string;
|
||||
skip?: boolean;
|
||||
fetchPolicy?: WatchQueryFetchPolicy;
|
||||
};
|
||||
|
||||
export const useGetDatabaseConnection = ({
|
||||
databaseKey,
|
||||
connectionId,
|
||||
skip,
|
||||
fetchPolicy,
|
||||
}: UseGetDatabaseConnectionParams) => {
|
||||
const apolloMetadataClient = useApolloMetadataClient();
|
||||
const foreignDataWrapperType = getForeignDataWrapperType(databaseKey);
|
||||
|
||||
const fetchPolicyOption = fetchPolicy ? { fetchPolicy: fetchPolicy } : {};
|
||||
|
||||
const { data, loading } = useQuery<
|
||||
GetOneDatabaseConnectionQuery,
|
||||
GetOneDatabaseConnectionQueryVariables
|
||||
@ -33,6 +37,7 @@ export const useGetDatabaseConnection = ({
|
||||
id: connectionId,
|
||||
},
|
||||
},
|
||||
...fetchPolicyOption,
|
||||
});
|
||||
|
||||
const connection = data?.findOneRemoteServerById ?? null;
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
import { useQuery } from '@apollo/client';
|
||||
import { useQuery, WatchQueryFetchPolicy } from '@apollo/client';
|
||||
|
||||
import { GET_MANY_REMOTE_TABLES } from '@/databases/graphql/queries/findManyRemoteTables';
|
||||
import { useApolloMetadataClient } from '@/object-metadata/hooks/useApolloMetadataClient';
|
||||
@ -11,15 +11,19 @@ type UseGetDatabaseConnectionTablesParams = {
|
||||
connectionId: string;
|
||||
skip?: boolean;
|
||||
shouldFetchPendingSchemaUpdates?: boolean;
|
||||
fetchPolicy?: WatchQueryFetchPolicy;
|
||||
};
|
||||
|
||||
export const useGetDatabaseConnectionTables = ({
|
||||
connectionId,
|
||||
skip,
|
||||
shouldFetchPendingSchemaUpdates,
|
||||
fetchPolicy,
|
||||
}: UseGetDatabaseConnectionTablesParams) => {
|
||||
const apolloMetadataClient = useApolloMetadataClient();
|
||||
|
||||
const fetchPolicyOption = fetchPolicy ? { fetchPolicy: fetchPolicy } : {};
|
||||
|
||||
const { data, error } = useQuery<
|
||||
GetManyRemoteTablesQuery,
|
||||
GetManyRemoteTablesQueryVariables
|
||||
@ -32,6 +36,7 @@ export const useGetDatabaseConnectionTables = ({
|
||||
shouldFetchPendingSchemaUpdates,
|
||||
},
|
||||
},
|
||||
...fetchPolicyOption,
|
||||
});
|
||||
|
||||
return {
|
||||
|
||||
@ -1,9 +1,12 @@
|
||||
import { useCallback } from 'react';
|
||||
import { ApolloClient, useMutation } from '@apollo/client';
|
||||
import { ApolloClient, useApolloClient, useMutation } from '@apollo/client';
|
||||
|
||||
import { SYNC_REMOTE_TABLE_SCHEMA_CHANGES } from '@/databases/graphql/mutations/syncRemoteTableSchemaChanges';
|
||||
import { modifyRemoteTableFromCache } from '@/databases/utils/modifyRemoteTableFromCache';
|
||||
import { useApolloMetadataClient } from '@/object-metadata/hooks/useApolloMetadataClient';
|
||||
import { useFindManyObjectMetadataItems } from '@/object-metadata/hooks/useFindManyObjectMetadataItems';
|
||||
import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular';
|
||||
import { useFindManyRecordsQuery } from '@/object-record/hooks/useFindManyRecordsQuery';
|
||||
import {
|
||||
RemoteTableInput,
|
||||
SyncRemoteTableSchemaChangesMutation,
|
||||
@ -13,6 +16,14 @@ import { isDefined } from '~/utils/isDefined';
|
||||
|
||||
export const useSyncRemoteTableSchemaChanges = () => {
|
||||
const apolloMetadataClient = useApolloMetadataClient();
|
||||
const apolloClient = useApolloClient();
|
||||
|
||||
const { refetch: refetchObjectMetadataItems } =
|
||||
useFindManyObjectMetadataItems();
|
||||
|
||||
const { findManyRecordsQuery: findManyViewsQuery } = useFindManyRecordsQuery({
|
||||
objectNameSingular: CoreObjectNameSingular.View,
|
||||
});
|
||||
|
||||
const [mutate, mutationInformation] = useMutation<
|
||||
SyncRemoteTableSchemaChangesMutation,
|
||||
@ -42,9 +53,16 @@ export const useSyncRemoteTableSchemaChanges = () => {
|
||||
},
|
||||
});
|
||||
|
||||
await refetchObjectMetadataItems();
|
||||
|
||||
await apolloClient.query({
|
||||
query: findManyViewsQuery,
|
||||
fetchPolicy: 'network-only',
|
||||
});
|
||||
|
||||
return remoteTable;
|
||||
},
|
||||
[mutate],
|
||||
[mutate, refetchObjectMetadataItems, findManyViewsQuery, apolloClient],
|
||||
);
|
||||
|
||||
return {
|
||||
|
||||
Reference in New Issue
Block a user