Object creation triggers view creation

This commit is contained in:
Charles Bochet 2024-03-22 16:39:55 +01:00
parent 4a493b6ecf
commit 6713ac589d
2 changed files with 25 additions and 8 deletions

View File

@ -1,6 +1,8 @@
import { ApolloClient, useMutation } from '@apollo/client';
import { ApolloClient, useApolloClient, useMutation } from '@apollo/client';
import { getOperationName } from '@apollo/client/utilities';
import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem';
import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular';
import {
CreateObjectInput,
CreateOneObjectMetadataItemMutation,
@ -14,6 +16,10 @@ import { useApolloMetadataClient } from './useApolloMetadataClient';
export const useCreateOneObjectMetadataItem = () => {
const apolloMetadataClient = useApolloMetadataClient();
const apolloClient = useApolloClient();
const { findManyRecordsQuery } = useObjectMetadataItem({
objectNameSingular: CoreObjectNameSingular.View,
});
const [mutate] = useMutation<
CreateOneObjectMetadataItemMutation,
@ -23,16 +29,20 @@ export const useCreateOneObjectMetadataItem = () => {
});
const createOneObjectMetadataItem = async (input: CreateObjectInput) => {
return await mutate({
const createdObjectMetadata = await mutate({
variables: {
input: { object: input },
},
awaitRefetchQueries: true,
refetchQueries: [
getOperationName(FIND_MANY_OBJECT_METADATA_ITEMS) ?? '',
'FindManyRecordsMultipleMetadataItems',
],
refetchQueries: [getOperationName(FIND_MANY_OBJECT_METADATA_ITEMS) ?? ''],
});
await apolloClient.query({
query: findManyRecordsQuery,
fetchPolicy: 'network-only',
});
return createdObjectMetadata;
};
return {

View File

@ -490,8 +490,15 @@ export class ObjectMetadataService extends TypeOrmQueryService<ObjectMetadataEnt
const view = await workspaceDataSource?.query(
`INSERT INTO ${dataSourceMetadata.schema}."view"
("objectMetadataId", "type", "name")
VALUES ('${createdObjectMetadata.id}', 'table', 'All ${createdObjectMetadata.namePlural}') RETURNING *`,
("objectMetadataId", "type", "name", "key", "icon")
VALUES ($1, $2, $3, $4, $5) RETURNING *`,
[
createdObjectMetadata.id,
'table',
`All ${createdObjectMetadata.namePlural}`,
'INDEX',
createdObjectMetadata.icon,
],
);
createdObjectMetadata.fields.map(async (field, index) => {