## Context All objects have '...duplicates' resolver but only companies and people have duplicate criteria (hard coded constant). Gql schema and resolver should be created only if duplicate criteria exist. ## Solution - Add a new @WorkspaceDuplicateCriteria decorator at object level, defining duplicate criteria for given object. - Add a new duplicate criteria field in ObjectMetadata table - Update schema and resolver building logic - Update front requests for duplicate check (only for object with criteria defined) closes https://github.com/twentyhq/twenty/issues/9828
31 lines
1.1 KiB
TypeScript
31 lines
1.1 KiB
TypeScript
import { IndexMetadataInterface } from 'src/engine/metadata-modules/index-metadata/interfaces/index-metadata.interface';
|
|
|
|
import { WorkspaceEntityDuplicateCriteria } from 'src/engine/api/graphql/workspace-query-builder/types/workspace-entity-duplicate-criteria.type';
|
|
|
|
import { FieldMetadataInterface } from './field-metadata.interface';
|
|
import { RelationMetadataInterface } from './relation-metadata.interface';
|
|
|
|
export interface ObjectMetadataInterface {
|
|
id: string;
|
|
standardId?: string | null;
|
|
workspaceId: string;
|
|
nameSingular: string;
|
|
namePlural: string;
|
|
labelSingular: string;
|
|
labelPlural: string;
|
|
description?: string;
|
|
targetTableName: string;
|
|
fromRelations: RelationMetadataInterface[];
|
|
toRelations: RelationMetadataInterface[];
|
|
fields: FieldMetadataInterface[];
|
|
indexMetadatas: IndexMetadataInterface[];
|
|
isSystem: boolean;
|
|
isCustom: boolean;
|
|
isActive: boolean;
|
|
isRemote: boolean;
|
|
isAuditLogged: boolean;
|
|
duplicateCriteria?: WorkspaceEntityDuplicateCriteria[];
|
|
labelIdentifierFieldMetadataId?: string | null;
|
|
imageIdentifierFieldMetadataId?: string | null;
|
|
}
|