Migrate to a monorepo structure (#2909)
This commit is contained in:
@ -0,0 +1,25 @@
|
||||
import { FieldMetadataItem } from '@/object-metadata/types/FieldMetadataItem';
|
||||
import { parseFieldRelationType } from '@/object-metadata/utils/parseFieldRelationType';
|
||||
|
||||
export const filterAvailableFieldMetadataItem = (
|
||||
fieldMetadataItem: FieldMetadataItem,
|
||||
): boolean => {
|
||||
if (fieldMetadataItem.type === 'RELATION') {
|
||||
const fieldMetadataItemRelationType =
|
||||
parseFieldRelationType(fieldMetadataItem);
|
||||
|
||||
if (fieldMetadataItemRelationType !== 'TO_ONE_OBJECT') {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if (fieldMetadataItem.type === 'UUID') {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (fieldMetadataItem.isSystem) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
};
|
||||
@ -0,0 +1,27 @@
|
||||
import { FieldMetadata } from '@/object-record/field/types/FieldMetadata';
|
||||
import { isFieldRelation } from '@/object-record/field/types/guards/isFieldRelation';
|
||||
import { ColumnDefinition } from '@/object-record/record-table/types/ColumnDefinition';
|
||||
|
||||
export const filterAvailableTableColumns = (
|
||||
columnDefinition: ColumnDefinition<FieldMetadata>,
|
||||
): boolean => {
|
||||
if (
|
||||
isFieldRelation(columnDefinition) &&
|
||||
columnDefinition.metadata?.relationType !== 'TO_ONE_OBJECT'
|
||||
) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (columnDefinition.type === 'UUID') {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (
|
||||
isFieldRelation(columnDefinition) &&
|
||||
columnDefinition.metadata?.fieldName === 'pipelineStep'
|
||||
) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
};
|
||||
@ -0,0 +1,17 @@
|
||||
import { PaginatedRecordTypeEdge } from '@/object-record/types/PaginatedRecordTypeResults';
|
||||
|
||||
export const filterUniqueRecordEdgesByCursor = <
|
||||
RecordType extends { id: string },
|
||||
>(
|
||||
arrayToFilter: PaginatedRecordTypeEdge<RecordType>[],
|
||||
) => {
|
||||
const seenCursors = new Set();
|
||||
|
||||
return arrayToFilter.filter((item) => {
|
||||
const currentCursor = item.cursor;
|
||||
|
||||
return seenCursors.has(currentCursor)
|
||||
? false
|
||||
: seenCursors.add(currentCursor);
|
||||
});
|
||||
};
|
||||
@ -0,0 +1,25 @@
|
||||
import { gql } from '@apollo/client';
|
||||
|
||||
import { EMPTY_MUTATION } from '@/object-metadata/hooks/useObjectMetadataItem';
|
||||
import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem';
|
||||
import { capitalize } from '~/utils/string/capitalize';
|
||||
|
||||
export const generateDeleteOneRecordMutation = ({
|
||||
objectMetadataItem,
|
||||
}: {
|
||||
objectMetadataItem: ObjectMetadataItem;
|
||||
}) => {
|
||||
if (!objectMetadataItem) {
|
||||
return EMPTY_MUTATION;
|
||||
}
|
||||
|
||||
const capitalizedObjectName = capitalize(objectMetadataItem.nameSingular);
|
||||
|
||||
return gql`
|
||||
mutation DeleteOne${capitalizedObjectName}($idToDelete: ID!) {
|
||||
delete${capitalizedObjectName}(id: $idToDelete) {
|
||||
id
|
||||
}
|
||||
}
|
||||
`;
|
||||
};
|
||||
@ -0,0 +1,24 @@
|
||||
export const mapPaginatedRecordsToRecords = <
|
||||
RecordType extends { id: string } & Record<string, any>,
|
||||
RecordTypeQuery extends {
|
||||
[objectNamePlural: string]: {
|
||||
edges: RecordEdge[];
|
||||
};
|
||||
},
|
||||
RecordEdge extends {
|
||||
node: RecordType;
|
||||
},
|
||||
>({
|
||||
pagedRecords,
|
||||
objectNamePlural,
|
||||
}: {
|
||||
pagedRecords: RecordTypeQuery | undefined;
|
||||
objectNamePlural: string;
|
||||
}) => {
|
||||
const formattedRecords: RecordType[] =
|
||||
pagedRecords?.[objectNamePlural]?.edges?.map((recordEdge: RecordEdge) => ({
|
||||
...recordEdge.node,
|
||||
})) ?? [];
|
||||
|
||||
return formattedRecords;
|
||||
};
|
||||
Reference in New Issue
Block a user