* update findOneWorkspaceMember * profile picture upload is working * first name and last name working * support almost working * remove picture working * removed unused code * remove console logs and fix allowImpersonation in FIND_ONE_WORKSPACE_MEMBER_V2 * use useUpdateOneObjectRecord
83 lines
2.0 KiB
TypeScript
83 lines
2.0 KiB
TypeScript
import { useFindManyObjectMetadataItems } from '@/object-metadata/hooks/useFindManyObjectMetadataItems';
|
|
import { FieldType } from '@/ui/object/field/types/FieldType';
|
|
|
|
import { FieldMetadataItem } from '../types/FieldMetadataItem';
|
|
|
|
export const useMapFieldMetadataToGraphQLQuery = () => {
|
|
const { objectMetadataItems } = useFindManyObjectMetadataItems();
|
|
|
|
const mapFieldMetadataToGraphQLQuery = (field: FieldMetadataItem): any => {
|
|
// TODO: parse
|
|
const fieldType = field.type as FieldType;
|
|
|
|
const fieldIsSimpleValue = (
|
|
[
|
|
'TEXT',
|
|
'PHONE',
|
|
'DATE',
|
|
'EMAIL',
|
|
'NUMBER',
|
|
'BOOLEAN',
|
|
'DATE',
|
|
] as FieldType[]
|
|
).includes(fieldType);
|
|
|
|
const fieldIsURL = fieldType === 'URL' || fieldType === 'URL_V2';
|
|
|
|
const fieldIsMoneyAmount =
|
|
fieldType === 'MONEY' || fieldType === 'MONEY_AMOUNT_V2';
|
|
|
|
if (fieldIsSimpleValue) {
|
|
return field.name;
|
|
} else if (
|
|
fieldType === 'RELATION' &&
|
|
field.toRelationMetadata?.relationType === 'ONE_TO_MANY'
|
|
) {
|
|
const relationMetadataItem = objectMetadataItems.find(
|
|
(objectMetadataItem) =>
|
|
objectMetadataItem.id ===
|
|
(field.toRelationMetadata as any)?.fromObjectMetadata?.id,
|
|
);
|
|
|
|
return `${field.name}
|
|
{
|
|
id
|
|
${relationMetadataItem?.fields
|
|
.filter((field) => field.type !== 'RELATION')
|
|
.map((field) => field.name)
|
|
.join('\n')}
|
|
}`;
|
|
} else if (
|
|
fieldType === 'RELATION' &&
|
|
field.fromRelationMetadata?.relationType === 'ONE_TO_MANY'
|
|
) {
|
|
return `${field.name}
|
|
{
|
|
edges {
|
|
node {
|
|
id
|
|
}
|
|
}
|
|
}`;
|
|
} else if (fieldIsURL) {
|
|
return `
|
|
${field.name}
|
|
{
|
|
text
|
|
link
|
|
}
|
|
`;
|
|
} else if (fieldIsMoneyAmount) {
|
|
return `
|
|
${field.name}
|
|
{
|
|
amount
|
|
currency
|
|
}
|
|
`;
|
|
}
|
|
};
|
|
|
|
return mapFieldMetadataToGraphQLQuery;
|
|
};
|