Replace ObjectMetadataInterface by ObjectMetadataEntity (#13317)

# Introduction
Following https://github.com/twentyhq/twenty/pull/13310
> After this PR merge will create a new one removing the type and
replacing it to ObjectMetadataEntity.

This is it !
This commit is contained in:
Paul Rastoin
2025-07-21 18:37:42 +02:00
committed by GitHub
parent 37d7996a04
commit 637b1b628a
39 changed files with 105 additions and 121 deletions

View File

@ -1,13 +1,13 @@
import { GraphQLResolveInfo } from 'graphql'; import { GraphQLResolveInfo } from 'graphql';
import { ObjectMetadataInterface } from 'src/engine/metadata-modules/field-metadata/interfaces/object-metadata.interface';
import { WorkspaceQueryBuilderOptions } from 'src/engine/api/graphql/workspace-query-builder/interfaces/workspace-query-builder-options.interface'; import { WorkspaceQueryBuilderOptions } from 'src/engine/api/graphql/workspace-query-builder/interfaces/workspace-query-builder-options.interface';
import { objectMetadataItemMock } from 'src/engine/api/__mocks__/object-metadata-item.mock'; import { objectMetadataItemMock } from 'src/engine/api/__mocks__/object-metadata-item.mock';
import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity';
export const workspaceQueryBuilderOptionsMock: WorkspaceQueryBuilderOptions = { export const workspaceQueryBuilderOptionsMock: WorkspaceQueryBuilderOptions = {
fieldMetadataCollection: [], fieldMetadataCollection: [],
info: {} as GraphQLResolveInfo, info: {} as GraphQLResolveInfo,
objectMetadataCollection: [], objectMetadataCollection: [],
objectMetadataItem: objectMetadataItemMock as ObjectMetadataInterface, objectMetadataItem: objectMetadataItemMock as ObjectMetadataEntity,
}; };

View File

@ -1,13 +1,12 @@
import { GraphQLResolveInfo } from 'graphql'; import { GraphQLResolveInfo } from 'graphql';
import { ObjectMetadataInterface } from 'src/engine/metadata-modules/field-metadata/interfaces/object-metadata.interface';
import { FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity'; import { FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity';
import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity';
export interface WorkspaceQueryBuilderOptions { export interface WorkspaceQueryBuilderOptions {
objectMetadataItem: ObjectMetadataInterface; objectMetadataItem: ObjectMetadataEntity;
info: GraphQLResolveInfo; info: GraphQLResolveInfo;
fieldMetadataCollection: FieldMetadataEntity[]; fieldMetadataCollection: FieldMetadataEntity[];
objectMetadataCollection: ObjectMetadataInterface[]; objectMetadataCollection: ObjectMetadataEntity[];
withSoftDeleted?: boolean; withSoftDeleted?: boolean;
} }

View File

@ -3,16 +3,16 @@ import { Injectable } from '@nestjs/common';
import { isDefined } from 'twenty-shared/utils'; import { isDefined } from 'twenty-shared/utils';
import { WorkspaceResolverBuilderMethodNames } from 'src/engine/api/graphql/workspace-resolver-builder/interfaces/workspace-resolvers-builder.interface'; import { WorkspaceResolverBuilderMethodNames } from 'src/engine/api/graphql/workspace-resolver-builder/interfaces/workspace-resolvers-builder.interface';
import { ObjectMetadataInterface } from 'src/engine/metadata-modules/field-metadata/interfaces/object-metadata.interface';
import { FindDuplicatesResolverFactory } from 'src/engine/api/graphql/workspace-resolver-builder/factories/find-duplicates-resolver.factory'; import { FindDuplicatesResolverFactory } from 'src/engine/api/graphql/workspace-resolver-builder/factories/find-duplicates-resolver.factory';
import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity';
@Injectable() @Injectable()
export class WorkspaceResolverBuilderService { export class WorkspaceResolverBuilderService {
constructor() {} constructor() {}
shouldBuildResolver( shouldBuildResolver(
objectMetadata: Pick<ObjectMetadataInterface, 'duplicateCriteria'>, objectMetadata: Pick<ObjectMetadataEntity, 'duplicateCriteria'>,
methodName: WorkspaceResolverBuilderMethodNames, methodName: WorkspaceResolverBuilderMethodNames,
) { ) {
switch (methodName) { switch (methodName) {

View File

@ -1,18 +1,17 @@
import { Injectable } from '@nestjs/common'; import { Injectable } from '@nestjs/common';
import { ObjectMetadataInterface } from 'src/engine/metadata-modules/field-metadata/interfaces/object-metadata.interface';
import { import {
AggregationField, AggregationField,
getAvailableAggregationsFromObjectFields, getAvailableAggregationsFromObjectFields,
} from 'src/engine/api/graphql/workspace-schema-builder/utils/get-available-aggregations-from-object-fields.util'; } from 'src/engine/api/graphql/workspace-schema-builder/utils/get-available-aggregations-from-object-fields.util';
import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity';
type AggregationGraphQLType = Pick<AggregationField, 'type' | 'description'>; type AggregationGraphQLType = Pick<AggregationField, 'type' | 'description'>;
@Injectable() @Injectable()
export class AggregationTypeFactory { export class AggregationTypeFactory {
public create( public create(
objectMetadata: ObjectMetadataInterface, objectMetadata: ObjectMetadataEntity,
): Record<string, AggregationGraphQLType> { ): Record<string, AggregationGraphQLType> {
const availableAggregations = getAvailableAggregationsFromObjectFields( const availableAggregations = getAvailableAggregationsFromObjectFields(
objectMetadata.fields, objectMetadata.fields,

View File

@ -2,11 +2,11 @@ import { Injectable, Logger } from '@nestjs/common';
import { GraphQLFieldConfigArgumentMap } from 'graphql'; import { GraphQLFieldConfigArgumentMap } from 'graphql';
import { WorkspaceBuildSchemaOptions } from 'src/engine/api/graphql/workspace-schema-builder/interfaces/workspace-build-schema-optionts.interface';
import { ArgsMetadata } from 'src/engine/api/graphql/workspace-schema-builder/interfaces/param-metadata.interface'; import { ArgsMetadata } from 'src/engine/api/graphql/workspace-schema-builder/interfaces/param-metadata.interface';
import { WorkspaceBuildSchemaOptions } from 'src/engine/api/graphql/workspace-schema-builder/interfaces/workspace-build-schema-options.interface';
import { TypeDefinitionsStorage } from 'src/engine/api/graphql/workspace-schema-builder/storages/type-definitions.storage';
import { TypeMapperService } from 'src/engine/api/graphql/workspace-schema-builder/services/type-mapper.service'; import { TypeMapperService } from 'src/engine/api/graphql/workspace-schema-builder/services/type-mapper.service';
import { TypeDefinitionsStorage } from 'src/engine/api/graphql/workspace-schema-builder/storages/type-definitions.storage';
@Injectable() @Injectable()
export class ArgsFactory { export class ArgsFactory {

View File

@ -3,7 +3,7 @@ import { Injectable, Logger } from '@nestjs/common';
import { GraphQLEnumType } from 'graphql'; import { GraphQLEnumType } from 'graphql';
import { FieldMetadataType } from 'twenty-shared/types'; import { FieldMetadataType } from 'twenty-shared/types';
import { WorkspaceBuildSchemaOptions } from 'src/engine/api/graphql/workspace-schema-builder/interfaces/workspace-build-schema-optionts.interface'; import { WorkspaceBuildSchemaOptions } from 'src/engine/api/graphql/workspace-schema-builder/interfaces/workspace-build-schema-options.interface';
import { import {
CompositeProperty, CompositeProperty,
CompositeType, CompositeType,

View File

@ -3,7 +3,7 @@ import { Injectable, Logger } from '@nestjs/common';
import { GraphQLInputFieldConfigMap, GraphQLInputObjectType } from 'graphql'; import { GraphQLInputFieldConfigMap, GraphQLInputObjectType } from 'graphql';
import { FieldMetadataType } from 'twenty-shared/types'; import { FieldMetadataType } from 'twenty-shared/types';
import { WorkspaceBuildSchemaOptions } from 'src/engine/api/graphql/workspace-schema-builder/interfaces/workspace-build-schema-optionts.interface'; import { WorkspaceBuildSchemaOptions } from 'src/engine/api/graphql/workspace-schema-builder/interfaces/workspace-build-schema-options.interface';
import { CompositeType } from 'src/engine/metadata-modules/field-metadata/interfaces/composite-type.interface'; import { CompositeType } from 'src/engine/metadata-modules/field-metadata/interfaces/composite-type.interface';
import { import {

View File

@ -3,7 +3,7 @@ import { Injectable, Logger } from '@nestjs/common';
import { GraphQLFieldConfigMap, GraphQLObjectType } from 'graphql'; import { GraphQLFieldConfigMap, GraphQLObjectType } from 'graphql';
import { FieldMetadataType } from 'twenty-shared/types'; import { FieldMetadataType } from 'twenty-shared/types';
import { WorkspaceBuildSchemaOptions } from 'src/engine/api/graphql/workspace-schema-builder/interfaces/workspace-build-schema-optionts.interface'; import { WorkspaceBuildSchemaOptions } from 'src/engine/api/graphql/workspace-schema-builder/interfaces/workspace-build-schema-options.interface';
import { CompositeType } from 'src/engine/metadata-modules/field-metadata/interfaces/composite-type.interface'; import { CompositeType } from 'src/engine/metadata-modules/field-metadata/interfaces/composite-type.interface';
import { import {

View File

@ -2,10 +2,10 @@ import { Injectable } from '@nestjs/common';
import { GraphQLFieldConfigMap, GraphQLObjectType } from 'graphql'; import { GraphQLFieldConfigMap, GraphQLObjectType } from 'graphql';
import { WorkspaceBuildSchemaOptions } from 'src/engine/api/graphql/workspace-schema-builder/interfaces/workspace-build-schema-optionts.interface'; import { WorkspaceBuildSchemaOptions } from 'src/engine/api/graphql/workspace-schema-builder/interfaces/workspace-build-schema-options.interface';
import { ObjectMetadataInterface } from 'src/engine/metadata-modules/field-metadata/interfaces/object-metadata.interface';
import { AggregationTypeFactory } from 'src/engine/api/graphql/workspace-schema-builder/factories/aggregation-type.factory'; import { AggregationTypeFactory } from 'src/engine/api/graphql/workspace-schema-builder/factories/aggregation-type.factory';
import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity';
import { pascalCase } from 'src/utils/pascal-case'; import { pascalCase } from 'src/utils/pascal-case';
import { ConnectionTypeFactory } from './connection-type.factory'; import { ConnectionTypeFactory } from './connection-type.factory';
@ -27,7 +27,7 @@ export class ConnectionTypeDefinitionFactory {
) {} ) {}
public create( public create(
objectMetadata: ObjectMetadataInterface, objectMetadata: ObjectMetadataEntity,
options: WorkspaceBuildSchemaOptions, options: WorkspaceBuildSchemaOptions,
): ObjectTypeDefinition { ): ObjectTypeDefinition {
const kind = ObjectTypeDefinitionKind.Connection; const kind = ObjectTypeDefinitionKind.Connection;
@ -44,12 +44,10 @@ export class ConnectionTypeDefinitionFactory {
} }
private generateFields( private generateFields(
objectMetadata: ObjectMetadataInterface, objectMetadata: ObjectMetadataEntity,
options: WorkspaceBuildSchemaOptions, options: WorkspaceBuildSchemaOptions,
// eslint-disable-next-line @typescript-eslint/no-explicit-any // eslint-disable-next-line @typescript-eslint/no-explicit-any
// eslint-disable-next-line @typescript-eslint/no-explicit-any
): GraphQLFieldConfigMap<any, any> { ): GraphQLFieldConfigMap<any, any> {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// eslint-disable-next-line @typescript-eslint/no-explicit-any // eslint-disable-next-line @typescript-eslint/no-explicit-any
const fields: GraphQLFieldConfigMap<any, any> = {}; const fields: GraphQLFieldConfigMap<any, any> = {};

View File

@ -2,8 +2,7 @@ import { Injectable, Logger } from '@nestjs/common';
import { GraphQLOutputType } from 'graphql'; import { GraphQLOutputType } from 'graphql';
import { WorkspaceBuildSchemaOptions } from 'src/engine/api/graphql/workspace-schema-builder/interfaces/workspace-build-schema-optionts.interface'; import { WorkspaceBuildSchemaOptions } from 'src/engine/api/graphql/workspace-schema-builder/interfaces/workspace-build-schema-options.interface';
import { ObjectMetadataInterface } from 'src/engine/metadata-modules/field-metadata/interfaces/object-metadata.interface';
import { PageInfoType } from 'src/engine/api/graphql/workspace-schema-builder/graphql-types/object'; import { PageInfoType } from 'src/engine/api/graphql/workspace-schema-builder/graphql-types/object';
import { import {
@ -11,6 +10,7 @@ import {
TypeOptions, TypeOptions,
} from 'src/engine/api/graphql/workspace-schema-builder/services/type-mapper.service'; } from 'src/engine/api/graphql/workspace-schema-builder/services/type-mapper.service';
import { TypeDefinitionsStorage } from 'src/engine/api/graphql/workspace-schema-builder/storages/type-definitions.storage'; import { TypeDefinitionsStorage } from 'src/engine/api/graphql/workspace-schema-builder/storages/type-definitions.storage';
import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity';
import { ConnectionTypeDefinitionKind } from './connection-type-definition.factory'; import { ConnectionTypeDefinitionKind } from './connection-type-definition.factory';
import { ObjectTypeDefinitionKind } from './object-type-definition.factory'; import { ObjectTypeDefinitionKind } from './object-type-definition.factory';
@ -25,7 +25,7 @@ export class ConnectionTypeFactory {
) {} ) {}
public create( public create(
objectMetadata: ObjectMetadataInterface, objectMetadata: ObjectMetadataEntity,
kind: ConnectionTypeDefinitionKind, kind: ConnectionTypeDefinitionKind,
buildOptions: WorkspaceBuildSchemaOptions, buildOptions: WorkspaceBuildSchemaOptions,
typeOptions: TypeOptions, typeOptions: TypeOptions,

View File

@ -2,16 +2,16 @@ import { Injectable } from '@nestjs/common';
import { GraphQLFieldConfigMap, GraphQLObjectType } from 'graphql'; import { GraphQLFieldConfigMap, GraphQLObjectType } from 'graphql';
import { WorkspaceBuildSchemaOptions } from 'src/engine/api/graphql/workspace-schema-builder/interfaces/workspace-build-schema-optionts.interface'; import { WorkspaceBuildSchemaOptions } from 'src/engine/api/graphql/workspace-schema-builder/interfaces/workspace-build-schema-options.interface';
import { ObjectMetadataInterface } from 'src/engine/metadata-modules/field-metadata/interfaces/object-metadata.interface';
import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity';
import { pascalCase } from 'src/utils/pascal-case'; import { pascalCase } from 'src/utils/pascal-case';
import { EdgeTypeFactory } from './edge-type.factory';
import { import {
ObjectTypeDefinition, ObjectTypeDefinition,
ObjectTypeDefinitionKind, ObjectTypeDefinitionKind,
} from './object-type-definition.factory'; } from './object-type-definition.factory';
import { EdgeTypeFactory } from './edge-type.factory';
export enum EdgeTypeDefinitionKind { export enum EdgeTypeDefinitionKind {
Node = 'Node', Node = 'Node',
@ -23,7 +23,7 @@ export class EdgeTypeDefinitionFactory {
constructor(private readonly edgeTypeFactory: EdgeTypeFactory) {} constructor(private readonly edgeTypeFactory: EdgeTypeFactory) {}
public create( public create(
objectMetadata: ObjectMetadataInterface, objectMetadata: ObjectMetadataEntity,
options: WorkspaceBuildSchemaOptions, options: WorkspaceBuildSchemaOptions,
): ObjectTypeDefinition { ): ObjectTypeDefinition {
const kind = ObjectTypeDefinitionKind.Edge; const kind = ObjectTypeDefinitionKind.Edge;
@ -40,7 +40,7 @@ export class EdgeTypeDefinitionFactory {
} }
private generateFields( private generateFields(
objectMetadata: ObjectMetadataInterface, objectMetadata: ObjectMetadataEntity,
options: WorkspaceBuildSchemaOptions, options: WorkspaceBuildSchemaOptions,
// eslint-disable-next-line @typescript-eslint/no-explicit-any // eslint-disable-next-line @typescript-eslint/no-explicit-any
// eslint-disable-next-line @typescript-eslint/no-explicit-any // eslint-disable-next-line @typescript-eslint/no-explicit-any

View File

@ -2,8 +2,7 @@ import { Injectable, Logger } from '@nestjs/common';
import { GraphQLOutputType } from 'graphql'; import { GraphQLOutputType } from 'graphql';
import { WorkspaceBuildSchemaOptions } from 'src/engine/api/graphql/workspace-schema-builder/interfaces/workspace-build-schema-optionts.interface'; import { WorkspaceBuildSchemaOptions } from 'src/engine/api/graphql/workspace-schema-builder/interfaces/workspace-build-schema-options.interface';
import { ObjectMetadataInterface } from 'src/engine/metadata-modules/field-metadata/interfaces/object-metadata.interface';
import { CursorScalarType } from 'src/engine/api/graphql/workspace-schema-builder/graphql-types/scalars'; import { CursorScalarType } from 'src/engine/api/graphql/workspace-schema-builder/graphql-types/scalars';
import { import {
@ -11,6 +10,7 @@ import {
TypeOptions, TypeOptions,
} from 'src/engine/api/graphql/workspace-schema-builder/services/type-mapper.service'; } from 'src/engine/api/graphql/workspace-schema-builder/services/type-mapper.service';
import { TypeDefinitionsStorage } from 'src/engine/api/graphql/workspace-schema-builder/storages/type-definitions.storage'; import { TypeDefinitionsStorage } from 'src/engine/api/graphql/workspace-schema-builder/storages/type-definitions.storage';
import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity';
import { EdgeTypeDefinitionKind } from './edge-type-definition.factory'; import { EdgeTypeDefinitionKind } from './edge-type-definition.factory';
import { ObjectTypeDefinitionKind } from './object-type-definition.factory'; import { ObjectTypeDefinitionKind } from './object-type-definition.factory';
@ -25,7 +25,7 @@ export class EdgeTypeFactory {
) {} ) {}
public create( public create(
objectMetadata: ObjectMetadataInterface, objectMetadata: ObjectMetadataEntity,
kind: EdgeTypeDefinitionKind, kind: EdgeTypeDefinitionKind,
buildOptions: WorkspaceBuildSchemaOptions, buildOptions: WorkspaceBuildSchemaOptions,
typeOptions: TypeOptions, typeOptions: TypeOptions,

View File

@ -3,8 +3,7 @@ import { Injectable, Logger } from '@nestjs/common';
import { GraphQLEnumType } from 'graphql'; import { GraphQLEnumType } from 'graphql';
import { isDefined } from 'twenty-shared/utils'; import { isDefined } from 'twenty-shared/utils';
import { WorkspaceBuildSchemaOptions } from 'src/engine/api/graphql/workspace-schema-builder/interfaces/workspace-build-schema-optionts.interface'; import { WorkspaceBuildSchemaOptions } from 'src/engine/api/graphql/workspace-schema-builder/interfaces/workspace-build-schema-options.interface';
import { ObjectMetadataInterface } from 'src/engine/metadata-modules/field-metadata/interfaces/object-metadata.interface';
import { import {
FieldMetadataComplexOption, FieldMetadataComplexOption,
@ -12,6 +11,7 @@ import {
} from 'src/engine/metadata-modules/field-metadata/dtos/options.input'; } from 'src/engine/metadata-modules/field-metadata/dtos/options.input';
import { FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity'; import { FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity';
import { isEnumFieldMetadataType } from 'src/engine/metadata-modules/field-metadata/utils/is-enum-field-metadata-type.util'; import { isEnumFieldMetadataType } from 'src/engine/metadata-modules/field-metadata/utils/is-enum-field-metadata-type.util';
import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity';
import { transformEnumValue } from 'src/engine/utils/transform-enum-value'; import { transformEnumValue } from 'src/engine/utils/transform-enum-value';
import { pascalCase } from 'src/utils/pascal-case'; import { pascalCase } from 'src/utils/pascal-case';
@ -25,7 +25,7 @@ export class EnumTypeDefinitionFactory {
private readonly logger = new Logger(EnumTypeDefinitionFactory.name); private readonly logger = new Logger(EnumTypeDefinitionFactory.name);
public create( public create(
objectMetadata: ObjectMetadataInterface, objectMetadata: ObjectMetadataEntity,
options: WorkspaceBuildSchemaOptions, options: WorkspaceBuildSchemaOptions,
): EnumTypeDefinition[] { ): EnumTypeDefinition[] {
const enumTypeDefinitions: EnumTypeDefinition[] = []; const enumTypeDefinitions: EnumTypeDefinition[] = [];

View File

@ -7,14 +7,14 @@ import {
} from 'graphql'; } from 'graphql';
import { FieldMetadataType } from 'twenty-shared/types'; import { FieldMetadataType } from 'twenty-shared/types';
import { WorkspaceBuildSchemaOptions } from 'src/engine/api/graphql/workspace-schema-builder/interfaces/workspace-build-schema-optionts.interface'; import { WorkspaceBuildSchemaOptions } from 'src/engine/api/graphql/workspace-schema-builder/interfaces/workspace-build-schema-options.interface';
import { ObjectMetadataInterface } from 'src/engine/metadata-modules/field-metadata/interfaces/object-metadata.interface';
import { RelationType } from 'src/engine/metadata-modules/field-metadata/interfaces/relation-type.interface'; import { RelationType } from 'src/engine/metadata-modules/field-metadata/interfaces/relation-type.interface';
import { RelationTypeV2Factory } from 'src/engine/api/graphql/workspace-schema-builder/factories/relation-type-v2.factory'; import { RelationTypeV2Factory } from 'src/engine/api/graphql/workspace-schema-builder/factories/relation-type-v2.factory';
import { TypeDefinitionsStorage } from 'src/engine/api/graphql/workspace-schema-builder/storages/type-definitions.storage'; import { TypeDefinitionsStorage } from 'src/engine/api/graphql/workspace-schema-builder/storages/type-definitions.storage';
import { getResolverArgs } from 'src/engine/api/graphql/workspace-schema-builder/utils/get-resolver-args.util'; import { getResolverArgs } from 'src/engine/api/graphql/workspace-schema-builder/utils/get-resolver-args.util';
import { objectContainsRelationField } from 'src/engine/api/graphql/workspace-schema-builder/utils/object-contains-relation-field'; import { objectContainsRelationField } from 'src/engine/api/graphql/workspace-schema-builder/utils/object-contains-relation-field';
import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity';
import { isFieldMetadataEntityOfType } from 'src/engine/utils/is-field-metadata-of-type.util'; import { isFieldMetadataEntityOfType } from 'src/engine/utils/is-field-metadata-of-type.util';
import { ArgsFactory } from './args.factory'; import { ArgsFactory } from './args.factory';
@ -44,7 +44,7 @@ export class ExtendObjectTypeDefinitionV2Factory {
) {} ) {}
public create( public create(
objectMetadata: ObjectMetadataInterface, objectMetadata: ObjectMetadataEntity,
options: WorkspaceBuildSchemaOptions, options: WorkspaceBuildSchemaOptions,
): ObjectTypeDefinition { ): ObjectTypeDefinition {
const kind = ObjectTypeDefinitionKind.Plain; const kind = ObjectTypeDefinitionKind.Plain;
@ -101,12 +101,10 @@ export class ExtendObjectTypeDefinitionV2Factory {
} }
private generateFields( private generateFields(
objectMetadata: ObjectMetadataInterface, objectMetadata: ObjectMetadataEntity,
options: WorkspaceBuildSchemaOptions, options: WorkspaceBuildSchemaOptions,
// eslint-disable-next-line @typescript-eslint/no-explicit-any // eslint-disable-next-line @typescript-eslint/no-explicit-any
// eslint-disable-next-line @typescript-eslint/no-explicit-any
): GraphQLFieldConfigMap<any, any> { ): GraphQLFieldConfigMap<any, any> {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// eslint-disable-next-line @typescript-eslint/no-explicit-any // eslint-disable-next-line @typescript-eslint/no-explicit-any
const fields: GraphQLFieldConfigMap<any, any> = {}; const fields: GraphQLFieldConfigMap<any, any> = {};

View File

@ -2,11 +2,11 @@ import { Inject, Injectable, forwardRef } from '@nestjs/common';
import { GraphQLInputObjectType } from 'graphql'; import { GraphQLInputObjectType } from 'graphql';
import { WorkspaceBuildSchemaOptions } from 'src/engine/api/graphql/workspace-schema-builder/interfaces/workspace-build-schema-optionts.interface'; import { WorkspaceBuildSchemaOptions } from 'src/engine/api/graphql/workspace-schema-builder/interfaces/workspace-build-schema-options.interface';
import { ObjectMetadataInterface } from 'src/engine/metadata-modules/field-metadata/interfaces/object-metadata.interface';
import { TypeMapperService } from 'src/engine/api/graphql/workspace-schema-builder/services/type-mapper.service'; import { TypeMapperService } from 'src/engine/api/graphql/workspace-schema-builder/services/type-mapper.service';
import { generateFields } from 'src/engine/api/graphql/workspace-schema-builder/utils/generate-fields.utils'; import { generateFields } from 'src/engine/api/graphql/workspace-schema-builder/utils/generate-fields.utils';
import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity';
import { pascalCase } from 'src/utils/pascal-case'; import { pascalCase } from 'src/utils/pascal-case';
import { InputTypeFactory } from './input-type.factory'; import { InputTypeFactory } from './input-type.factory';
@ -37,7 +37,7 @@ export class InputTypeDefinitionFactory {
kind, kind,
options, options,
}: { }: {
objectMetadata: ObjectMetadataInterface; objectMetadata: ObjectMetadataEntity;
kind: InputTypeDefinitionKind; kind: InputTypeDefinitionKind;
options: WorkspaceBuildSchemaOptions; options: WorkspaceBuildSchemaOptions;
}): InputTypeDefinition { }): InputTypeDefinition {

View File

@ -8,7 +8,7 @@ import {
} from 'graphql'; } from 'graphql';
import { FieldMetadataType } from 'twenty-shared/types'; import { FieldMetadataType } from 'twenty-shared/types';
import { WorkspaceBuildSchemaOptions } from 'src/engine/api/graphql/workspace-schema-builder/interfaces/workspace-build-schema-optionts.interface'; import { WorkspaceBuildSchemaOptions } from 'src/engine/api/graphql/workspace-schema-builder/interfaces/workspace-build-schema-options.interface';
import { FilterIs } from 'src/engine/api/graphql/workspace-schema-builder/graphql-types/input/filter-is.input-type'; import { FilterIs } from 'src/engine/api/graphql/workspace-schema-builder/graphql-types/input/filter-is.input-type';
import { import {

View File

@ -2,9 +2,10 @@ import { Injectable } from '@nestjs/common';
import { GraphQLObjectType } from 'graphql'; import { GraphQLObjectType } from 'graphql';
import { WorkspaceBuildSchemaOptions } from 'src/engine/api/graphql/workspace-schema-builder/interfaces/workspace-build-schema-optionts.interface';
import { WorkspaceResolverBuilderMutationMethodNames } from 'src/engine/api/graphql/workspace-resolver-builder/interfaces/workspace-resolvers-builder.interface'; import { WorkspaceResolverBuilderMutationMethodNames } from 'src/engine/api/graphql/workspace-resolver-builder/interfaces/workspace-resolvers-builder.interface';
import { ObjectMetadataInterface } from 'src/engine/metadata-modules/field-metadata/interfaces/object-metadata.interface'; import { WorkspaceBuildSchemaOptions } from 'src/engine/api/graphql/workspace-schema-builder/interfaces/workspace-build-schema-options.interface';
import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity';
import { ObjectTypeName, RootTypeFactory } from './root-type.factory'; import { ObjectTypeName, RootTypeFactory } from './root-type.factory';
@ -13,7 +14,7 @@ export class MutationTypeFactory {
constructor(private readonly rootTypeFactory: RootTypeFactory) {} constructor(private readonly rootTypeFactory: RootTypeFactory) {}
create( create(
objectMetadataCollection: ObjectMetadataInterface[], objectMetadataCollection: ObjectMetadataEntity[],
workspaceResolverMethodNames: WorkspaceResolverBuilderMutationMethodNames[], workspaceResolverMethodNames: WorkspaceResolverBuilderMutationMethodNames[],
options: WorkspaceBuildSchemaOptions, options: WorkspaceBuildSchemaOptions,
): GraphQLObjectType { ): GraphQLObjectType {

View File

@ -2,10 +2,10 @@ import { Injectable } from '@nestjs/common';
import { GraphQLObjectType } from 'graphql'; import { GraphQLObjectType } from 'graphql';
import { WorkspaceBuildSchemaOptions } from 'src/engine/api/graphql/workspace-schema-builder/interfaces/workspace-build-schema-optionts.interface'; import { WorkspaceBuildSchemaOptions } from 'src/engine/api/graphql/workspace-schema-builder/interfaces/workspace-build-schema-options.interface';
import { ObjectMetadataInterface } from 'src/engine/metadata-modules/field-metadata/interfaces/object-metadata.interface';
import { generateFields } from 'src/engine/api/graphql/workspace-schema-builder/utils/generate-fields.utils'; import { generateFields } from 'src/engine/api/graphql/workspace-schema-builder/utils/generate-fields.utils';
import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity';
import { pascalCase } from 'src/utils/pascal-case'; import { pascalCase } from 'src/utils/pascal-case';
import { OutputTypeFactory } from './output-type.factory'; import { OutputTypeFactory } from './output-type.factory';
@ -27,7 +27,7 @@ export class ObjectTypeDefinitionFactory {
constructor(private readonly outputTypeFactory: OutputTypeFactory) {} constructor(private readonly outputTypeFactory: OutputTypeFactory) {}
public create( public create(
objectMetadata: ObjectMetadataInterface, objectMetadata: ObjectMetadataEntity,
kind: ObjectTypeDefinitionKind, kind: ObjectTypeDefinitionKind,
options: WorkspaceBuildSchemaOptions, options: WorkspaceBuildSchemaOptions,
): ObjectTypeDefinition { ): ObjectTypeDefinition {

View File

@ -3,7 +3,7 @@ import { Injectable, Logger } from '@nestjs/common';
import { GraphQLOutputType } from 'graphql'; import { GraphQLOutputType } from 'graphql';
import { FieldMetadataType } from 'twenty-shared/types'; import { FieldMetadataType } from 'twenty-shared/types';
import { WorkspaceBuildSchemaOptions } from 'src/engine/api/graphql/workspace-schema-builder/interfaces/workspace-build-schema-optionts.interface'; import { WorkspaceBuildSchemaOptions } from 'src/engine/api/graphql/workspace-schema-builder/interfaces/workspace-build-schema-options.interface';
import { import {
TypeMapperService, TypeMapperService,

View File

@ -2,9 +2,10 @@ import { Injectable } from '@nestjs/common';
import { GraphQLObjectType } from 'graphql'; import { GraphQLObjectType } from 'graphql';
import { WorkspaceBuildSchemaOptions } from 'src/engine/api/graphql/workspace-schema-builder/interfaces/workspace-build-schema-optionts.interface';
import { WorkspaceResolverBuilderQueryMethodNames } from 'src/engine/api/graphql/workspace-resolver-builder/interfaces/workspace-resolvers-builder.interface'; import { WorkspaceResolverBuilderQueryMethodNames } from 'src/engine/api/graphql/workspace-resolver-builder/interfaces/workspace-resolvers-builder.interface';
import { ObjectMetadataInterface } from 'src/engine/metadata-modules/field-metadata/interfaces/object-metadata.interface'; import { WorkspaceBuildSchemaOptions } from 'src/engine/api/graphql/workspace-schema-builder/interfaces/workspace-build-schema-options.interface';
import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity';
import { ObjectTypeName, RootTypeFactory } from './root-type.factory'; import { ObjectTypeName, RootTypeFactory } from './root-type.factory';
@ -13,7 +14,7 @@ export class QueryTypeFactory {
constructor(private readonly rootTypeFactory: RootTypeFactory) {} constructor(private readonly rootTypeFactory: RootTypeFactory) {}
create( create(
objectMetadataCollection: ObjectMetadataInterface[], objectMetadataCollection: ObjectMetadataEntity[],
workspaceResolverMethodNames: WorkspaceResolverBuilderQueryMethodNames[], workspaceResolverMethodNames: WorkspaceResolverBuilderQueryMethodNames[],
options: WorkspaceBuildSchemaOptions, options: WorkspaceBuildSchemaOptions,
): GraphQLObjectType { ): GraphQLObjectType {

View File

@ -7,8 +7,6 @@ import {
GraphQLString, GraphQLString,
} from 'graphql'; } from 'graphql';
import { ObjectMetadataInterface } from 'src/engine/metadata-modules/field-metadata/interfaces/object-metadata.interface';
import { import {
InputTypeDefinition, InputTypeDefinition,
InputTypeDefinitionKind, InputTypeDefinitionKind,
@ -18,6 +16,7 @@ import { compositeTypeDefinitions } from 'src/engine/metadata-modules/field-meta
import { FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity'; import { FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity';
import { isCompositeFieldMetadataType } from 'src/engine/metadata-modules/field-metadata/utils/is-composite-field-metadata-type.util'; import { isCompositeFieldMetadataType } from 'src/engine/metadata-modules/field-metadata/utils/is-composite-field-metadata-type.util';
import { getUniqueConstraintsFields } from 'src/engine/metadata-modules/index-metadata/utils/getUniqueConstraintsFields.util'; import { getUniqueConstraintsFields } from 'src/engine/metadata-modules/index-metadata/utils/getUniqueConstraintsFields.util';
import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity';
import { pascalCase } from 'src/utils/pascal-case'; import { pascalCase } from 'src/utils/pascal-case';
export const formatRelationConnectInputTarget = (objectMetadataId: string) => export const formatRelationConnectInputTarget = (objectMetadataId: string) =>
@ -27,9 +26,7 @@ export const formatRelationConnectInputTarget = (objectMetadataId: string) =>
export class RelationConnectInputTypeDefinitionFactory { export class RelationConnectInputTypeDefinitionFactory {
constructor(private readonly typeMapperService: TypeMapperService) {} constructor(private readonly typeMapperService: TypeMapperService) {}
public create( public create(objectMetadata: ObjectMetadataEntity): InputTypeDefinition[] {
objectMetadata: ObjectMetadataInterface,
): InputTypeDefinition[] {
const fields = this.generateRelationConnectInputType(objectMetadata); const fields = this.generateRelationConnectInputType(objectMetadata);
const target = formatRelationConnectInputTarget(objectMetadata.id); const target = formatRelationConnectInputTarget(objectMetadata.id);
@ -43,7 +40,7 @@ export class RelationConnectInputTypeDefinitionFactory {
} }
private generateRelationConnectInputType( private generateRelationConnectInputType(
objectMetadata: ObjectMetadataInterface, objectMetadata: ObjectMetadataEntity,
): GraphQLInputObjectType { ): GraphQLInputObjectType {
return new GraphQLInputObjectType({ return new GraphQLInputObjectType({
name: `${pascalCase(objectMetadata.nameSingular)}RelationInput`, name: `${pascalCase(objectMetadata.nameSingular)}RelationInput`,
@ -60,11 +57,11 @@ export class RelationConnectInputTypeDefinitionFactory {
} }
private generateRelationWhereInputType( private generateRelationWhereInputType(
objectMetadata: ObjectMetadataInterface, objectMetadata: ObjectMetadataEntity,
): Record<string, GraphQLInputFieldConfig> { ): Record<string, GraphQLInputFieldConfig> {
const uniqueConstraints = getUniqueConstraintsFields< const uniqueConstraints = getUniqueConstraintsFields<
FieldMetadataEntity, FieldMetadataEntity,
ObjectMetadataInterface ObjectMetadataEntity
>(objectMetadata); >(objectMetadata);
const fields: Record< const fields: Record<

View File

@ -3,13 +3,13 @@ import { Injectable, Logger } from '@nestjs/common';
import { GraphQLFieldConfigMap, GraphQLObjectType } from 'graphql'; import { GraphQLFieldConfigMap, GraphQLObjectType } from 'graphql';
import { WorkspaceResolverBuilderMethodNames } from 'src/engine/api/graphql/workspace-resolver-builder/interfaces/workspace-resolvers-builder.interface'; import { WorkspaceResolverBuilderMethodNames } from 'src/engine/api/graphql/workspace-resolver-builder/interfaces/workspace-resolvers-builder.interface';
import { WorkspaceBuildSchemaOptions } from 'src/engine/api/graphql/workspace-schema-builder/interfaces/workspace-build-schema-optionts.interface'; import { WorkspaceBuildSchemaOptions } from 'src/engine/api/graphql/workspace-schema-builder/interfaces/workspace-build-schema-options.interface';
import { ObjectMetadataInterface } from 'src/engine/metadata-modules/field-metadata/interfaces/object-metadata.interface';
import { WorkspaceResolverBuilderService } from 'src/engine/api/graphql/workspace-resolver-builder/workspace-resolver-builder.service'; import { WorkspaceResolverBuilderService } from 'src/engine/api/graphql/workspace-resolver-builder/workspace-resolver-builder.service';
import { TypeMapperService } from 'src/engine/api/graphql/workspace-schema-builder/services/type-mapper.service'; import { TypeMapperService } from 'src/engine/api/graphql/workspace-schema-builder/services/type-mapper.service';
import { TypeDefinitionsStorage } from 'src/engine/api/graphql/workspace-schema-builder/storages/type-definitions.storage'; import { TypeDefinitionsStorage } from 'src/engine/api/graphql/workspace-schema-builder/storages/type-definitions.storage';
import { getResolverArgs } from 'src/engine/api/graphql/workspace-schema-builder/utils/get-resolver-args.util'; import { getResolverArgs } from 'src/engine/api/graphql/workspace-schema-builder/utils/get-resolver-args.util';
import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity';
import { getResolverName } from 'src/engine/utils/get-resolver-name.util'; import { getResolverName } from 'src/engine/utils/get-resolver-name.util';
import { ArgsFactory } from './args.factory'; import { ArgsFactory } from './args.factory';
@ -33,7 +33,7 @@ export class RootTypeFactory {
) {} ) {}
create( create(
objectMetadataCollection: ObjectMetadataInterface[], objectMetadataCollection: ObjectMetadataEntity[],
workspaceResolverMethodNames: WorkspaceResolverBuilderMethodNames[], workspaceResolverMethodNames: WorkspaceResolverBuilderMethodNames[],
objectTypeName: ObjectTypeName, objectTypeName: ObjectTypeName,
options: WorkspaceBuildSchemaOptions, options: WorkspaceBuildSchemaOptions,
@ -63,10 +63,9 @@ export class RootTypeFactory {
}); });
} }
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// eslint-disable-next-line @typescript-eslint/no-explicit-any // eslint-disable-next-line @typescript-eslint/no-explicit-any
private generateFields<T = any, U = any>( private generateFields<T = any, U = any>(
objectMetadataCollection: ObjectMetadataInterface[], objectMetadataCollection: ObjectMetadataEntity[],
workspaceResolverMethodNames: WorkspaceResolverBuilderMethodNames[], workspaceResolverMethodNames: WorkspaceResolverBuilderMethodNames[],
options: WorkspaceBuildSchemaOptions, options: WorkspaceBuildSchemaOptions,
): GraphQLFieldConfigMap<T, U> { ): GraphQLFieldConfigMap<T, U> {

View File

@ -1,7 +1,6 @@
import { Injectable, Logger } from '@nestjs/common'; import { Injectable, Logger } from '@nestjs/common';
import { CompositeType } from 'src/engine/metadata-modules/field-metadata/interfaces/composite-type.interface'; import { CompositeType } from 'src/engine/metadata-modules/field-metadata/interfaces/composite-type.interface';
import { ObjectMetadataInterface } from 'src/engine/metadata-modules/field-metadata/interfaces/object-metadata.interface';
import { CompositeEnumTypeDefinitionFactory } from 'src/engine/api/graphql/workspace-schema-builder/factories/composite-enum-type-definition.factory'; import { CompositeEnumTypeDefinitionFactory } from 'src/engine/api/graphql/workspace-schema-builder/factories/composite-enum-type-definition.factory';
import { CompositeInputTypeDefinitionFactory } from 'src/engine/api/graphql/workspace-schema-builder/factories/composite-input-type-definition.factory'; import { CompositeInputTypeDefinitionFactory } from 'src/engine/api/graphql/workspace-schema-builder/factories/composite-input-type-definition.factory';
@ -11,6 +10,7 @@ import { ExtendObjectTypeDefinitionV2Factory } from 'src/engine/api/graphql/work
import { RelationConnectInputTypeDefinitionFactory } from 'src/engine/api/graphql/workspace-schema-builder/factories/relation-connect-input-type-definition.factory'; import { RelationConnectInputTypeDefinitionFactory } from 'src/engine/api/graphql/workspace-schema-builder/factories/relation-connect-input-type-definition.factory';
import { FeatureFlagService } from 'src/engine/core-modules/feature-flag/services/feature-flag.service'; import { FeatureFlagService } from 'src/engine/core-modules/feature-flag/services/feature-flag.service';
import { compositeTypeDefinitions } from 'src/engine/metadata-modules/field-metadata/composite-types'; import { compositeTypeDefinitions } from 'src/engine/metadata-modules/field-metadata/composite-types';
import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity';
import { ConnectionTypeDefinitionFactory } from './factories/connection-type-definition.factory'; import { ConnectionTypeDefinitionFactory } from './factories/connection-type-definition.factory';
import { EdgeTypeDefinitionFactory } from './factories/edge-type-definition.factory'; import { EdgeTypeDefinitionFactory } from './factories/edge-type-definition.factory';
@ -22,7 +22,7 @@ import {
ObjectTypeDefinitionFactory, ObjectTypeDefinitionFactory,
ObjectTypeDefinitionKind, ObjectTypeDefinitionKind,
} from './factories/object-type-definition.factory'; } from './factories/object-type-definition.factory';
import { WorkspaceBuildSchemaOptions } from './interfaces/workspace-build-schema-optionts.interface'; import { WorkspaceBuildSchemaOptions } from './interfaces/workspace-build-schema-options.interface';
import { TypeDefinitionsStorage } from './storages/type-definitions.storage'; import { TypeDefinitionsStorage } from './storages/type-definitions.storage';
import { objectContainsRelationField } from './utils/object-contains-relation-field'; import { objectContainsRelationField } from './utils/object-contains-relation-field';
@ -46,7 +46,7 @@ export class TypeDefinitionsGenerator {
) {} ) {}
async generate( async generate(
objectMetadataCollection: ObjectMetadataInterface[], objectMetadataCollection: ObjectMetadataEntity[],
options: WorkspaceBuildSchemaOptions, options: WorkspaceBuildSchemaOptions,
) { ) {
// Generate composite type objects first because they can be used in dynamic objects // Generate composite type objects first because they can be used in dynamic objects
@ -152,7 +152,7 @@ export class TypeDefinitionsGenerator {
*/ */
private async generateMetadataTypeDefs( private async generateMetadataTypeDefs(
dynamicObjectMetadataCollection: ObjectMetadataInterface[], dynamicObjectMetadataCollection: ObjectMetadataEntity[],
options: WorkspaceBuildSchemaOptions, options: WorkspaceBuildSchemaOptions,
) { ) {
this.logger.log( this.logger.log(
@ -173,7 +173,7 @@ export class TypeDefinitionsGenerator {
} }
private generateObjectTypeDefs( private generateObjectTypeDefs(
objectMetadataCollection: ObjectMetadataInterface[] | CompositeType[], objectMetadataCollection: ObjectMetadataEntity[] | CompositeType[],
options: WorkspaceBuildSchemaOptions, options: WorkspaceBuildSchemaOptions,
) { ) {
const objectTypeDefs = objectMetadataCollection.map((objectMetadata) => const objectTypeDefs = objectMetadataCollection.map((objectMetadata) =>
@ -189,7 +189,7 @@ export class TypeDefinitionsGenerator {
} }
private generatePaginationTypeDefs( private generatePaginationTypeDefs(
objectMetadataCollection: ObjectMetadataInterface[], objectMetadataCollection: ObjectMetadataEntity[],
options: WorkspaceBuildSchemaOptions, options: WorkspaceBuildSchemaOptions,
) { ) {
const edgeTypeDefs = objectMetadataCollection.map((objectMetadata) => const edgeTypeDefs = objectMetadataCollection.map((objectMetadata) =>
@ -207,7 +207,7 @@ export class TypeDefinitionsGenerator {
} }
private async generateInputTypeDefs( private async generateInputTypeDefs(
objectMetadataCollection: ObjectMetadataInterface[], objectMetadataCollection: ObjectMetadataEntity[],
options: WorkspaceBuildSchemaOptions, options: WorkspaceBuildSchemaOptions,
) { ) {
const inputTypeDefs = objectMetadataCollection const inputTypeDefs = objectMetadataCollection
@ -253,7 +253,7 @@ export class TypeDefinitionsGenerator {
} }
private generateEnumTypeDefs( private generateEnumTypeDefs(
objectMetadataCollection: ObjectMetadataInterface[], objectMetadataCollection: ObjectMetadataEntity[],
options: WorkspaceBuildSchemaOptions, options: WorkspaceBuildSchemaOptions,
) { ) {
const enumTypeDefs = objectMetadataCollection const enumTypeDefs = objectMetadataCollection
@ -266,7 +266,7 @@ export class TypeDefinitionsGenerator {
} }
private async generateExtendedObjectTypeDefs( private async generateExtendedObjectTypeDefs(
objectMetadataCollection: ObjectMetadataInterface[], objectMetadataCollection: ObjectMetadataEntity[],
options: WorkspaceBuildSchemaOptions, options: WorkspaceBuildSchemaOptions,
) { ) {
// Generate extended object type defs only for objects that contain composite fields // Generate extended object type defs only for objects that contain composite fields
@ -291,7 +291,7 @@ export class TypeDefinitionsGenerator {
} }
private generateRelationConnectInputTypeDefs( private generateRelationConnectInputTypeDefs(
objectMetadataCollection: ObjectMetadataInterface[], objectMetadataCollection: ObjectMetadataEntity[],
) { ) {
const relationWhereInputTypeDefs = objectMetadataCollection const relationWhereInputTypeDefs = objectMetadataCollection
.map((objectMetadata) => .map((objectMetadata) =>

View File

@ -7,8 +7,7 @@ import {
import { FieldMetadataType } from 'twenty-shared/types'; import { FieldMetadataType } from 'twenty-shared/types';
import { isDefined } from 'twenty-shared/utils'; import { isDefined } from 'twenty-shared/utils';
import { WorkspaceBuildSchemaOptions } from 'src/engine/api/graphql/workspace-schema-builder/interfaces/workspace-build-schema-optionts.interface'; import { WorkspaceBuildSchemaOptions } from 'src/engine/api/graphql/workspace-schema-builder/interfaces/workspace-build-schema-options.interface';
import { ObjectMetadataInterface } from 'src/engine/metadata-modules/field-metadata/interfaces/object-metadata.interface';
import { RelationType } from 'src/engine/metadata-modules/field-metadata/interfaces/relation-type.interface'; import { RelationType } from 'src/engine/metadata-modules/field-metadata/interfaces/relation-type.interface';
import { InputTypeDefinitionKind } from 'src/engine/api/graphql/workspace-schema-builder/factories/input-type-definition.factory'; import { InputTypeDefinitionKind } from 'src/engine/api/graphql/workspace-schema-builder/factories/input-type-definition.factory';
@ -16,6 +15,7 @@ import { ObjectTypeDefinitionKind } from 'src/engine/api/graphql/workspace-schem
import { formatRelationConnectInputTarget } from 'src/engine/api/graphql/workspace-schema-builder/factories/relation-connect-input-type-definition.factory'; import { formatRelationConnectInputTarget } from 'src/engine/api/graphql/workspace-schema-builder/factories/relation-connect-input-type-definition.factory';
import { FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity'; import { FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity';
import { isCompositeFieldMetadataType } from 'src/engine/metadata-modules/field-metadata/utils/is-composite-field-metadata-type.util'; import { isCompositeFieldMetadataType } from 'src/engine/metadata-modules/field-metadata/utils/is-composite-field-metadata-type.util';
import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity';
import { isFieldMetadataEntityOfType } from 'src/engine/utils/is-field-metadata-of-type.util'; import { isFieldMetadataEntityOfType } from 'src/engine/utils/is-field-metadata-of-type.util';
type TypeFactory<T extends InputTypeDefinitionKind | ObjectTypeDefinitionKind> = type TypeFactory<T extends InputTypeDefinitionKind | ObjectTypeDefinitionKind> =
@ -48,7 +48,7 @@ export const generateFields = <
options, options,
typeFactory, typeFactory,
}: { }: {
objectMetadata: ObjectMetadataInterface; objectMetadata: ObjectMetadataEntity;
kind: T; kind: T;
options: WorkspaceBuildSchemaOptions; options: WorkspaceBuildSchemaOptions;
typeFactory: TypeFactory<T>; typeFactory: TypeFactory<T>;

View File

@ -1,9 +1,8 @@
import { ObjectMetadataInterface } from 'src/engine/metadata-modules/field-metadata/interfaces/object-metadata.interface'; import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity';
import { isRelationFieldMetadataType } from 'src/engine/utils/is-relation-field-metadata-type.util'; import { isRelationFieldMetadataType } from 'src/engine/utils/is-relation-field-metadata-type.util';
export const objectContainsRelationField = ( export const objectContainsRelationField = (
objectMetadata: ObjectMetadataInterface, objectMetadata: ObjectMetadataEntity,
): boolean => { ): boolean => {
return objectMetadata.fields.some((field) => return objectMetadata.fields.some((field) =>
isRelationFieldMetadataType(field.type), isRelationFieldMetadataType(field.type),

View File

@ -3,14 +3,15 @@ import { Injectable } from '@nestjs/common';
import { GraphQLSchema } from 'graphql'; import { GraphQLSchema } from 'graphql';
import { WorkspaceResolverBuilderMethods } from 'src/engine/api/graphql/workspace-resolver-builder/interfaces/workspace-resolvers-builder.interface'; import { WorkspaceResolverBuilderMethods } from 'src/engine/api/graphql/workspace-resolver-builder/interfaces/workspace-resolvers-builder.interface';
import { ObjectMetadataInterface } from 'src/engine/metadata-modules/field-metadata/interfaces/object-metadata.interface';
import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity';
import { TypeDefinitionsGenerator } from './type-definitions.generator'; import { TypeDefinitionsGenerator } from './type-definitions.generator';
import { MutationTypeFactory } from './factories/mutation-type.factory'; import { MutationTypeFactory } from './factories/mutation-type.factory';
import { OrphanedTypesFactory } from './factories/orphaned-types.factory'; import { OrphanedTypesFactory } from './factories/orphaned-types.factory';
import { QueryTypeFactory } from './factories/query-type.factory'; import { QueryTypeFactory } from './factories/query-type.factory';
import { WorkspaceBuildSchemaOptions } from './interfaces/workspace-build-schema-optionts.interface'; import { WorkspaceBuildSchemaOptions } from './interfaces/workspace-build-schema-options.interface';
@Injectable() @Injectable()
export class WorkspaceGraphQLSchemaFactory { export class WorkspaceGraphQLSchemaFactory {
@ -22,7 +23,7 @@ export class WorkspaceGraphQLSchemaFactory {
) {} ) {}
async create( async create(
objectMetadataCollection: ObjectMetadataInterface[], objectMetadataCollection: ObjectMetadataEntity[],
workspaceResolverBuilderMethods: WorkspaceResolverBuilderMethods, workspaceResolverBuilderMethods: WorkspaceResolverBuilderMethods,
options: WorkspaceBuildSchemaOptions = {}, options: WorkspaceBuildSchemaOptions = {},
): Promise<GraphQLSchema> { ): Promise<GraphQLSchema> {

View File

@ -1,6 +1,5 @@
import { ObjectMetadataInterface } from 'src/engine/metadata-modules/field-metadata/interfaces/object-metadata.interface';
import { ObjectRecordDiff } from 'src/engine/core-modules/event-emitter/types/object-record-diff'; import { ObjectRecordDiff } from 'src/engine/core-modules/event-emitter/types/object-record-diff';
import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity';
type Properties<T> = { type Properties<T> = {
updatedFields?: string[]; updatedFields?: string[];
@ -13,6 +12,6 @@ export class ObjectRecordBaseEvent<T = object> {
recordId: string; recordId: string;
userId?: string; userId?: string;
workspaceMemberId?: string; workspaceMemberId?: string;
objectMetadata: Omit<ObjectMetadataInterface, 'indexMetadatas'>; objectMetadata: Omit<ObjectMetadataEntity, 'indexMetadatas'>;
properties: Properties<T>; properties: Properties<T>;
} }

View File

@ -4,9 +4,9 @@ import DataLoader from 'dataloader';
import { APP_LOCALES } from 'twenty-shared/translations'; import { APP_LOCALES } from 'twenty-shared/translations';
import { isDefined } from 'twenty-shared/utils'; import { isDefined } from 'twenty-shared/utils';
import { ObjectMetadataInterface } from 'src/engine/metadata-modules/field-metadata/interfaces/object-metadata.interface';
import { IndexMetadataInterface } from 'src/engine/metadata-modules/index-metadata/interfaces/index-metadata.interface'; import { IndexMetadataInterface } from 'src/engine/metadata-modules/index-metadata/interfaces/index-metadata.interface';
import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity';
import { IDataloaders } from 'src/engine/dataloaders/dataloader.interface'; import { IDataloaders } from 'src/engine/dataloaders/dataloader.interface';
import { filterMorphRelationDuplicateFieldsDTO } from 'src/engine/dataloaders/utils/filter-morph-relation-duplicate-fields.util'; import { filterMorphRelationDuplicateFieldsDTO } from 'src/engine/dataloaders/utils/filter-morph-relation-duplicate-fields.util';
import { FieldMetadataDTO } from 'src/engine/metadata-modules/field-metadata/dtos/field-metadata.dto'; import { FieldMetadataDTO } from 'src/engine/metadata-modules/field-metadata/dtos/field-metadata.dto';
@ -17,7 +17,6 @@ import { fromFieldMetadataEntityToFieldMetadataDto } from 'src/engine/metadata-m
import { resolveFieldMetadataStandardOverride } from 'src/engine/metadata-modules/field-metadata/utils/resolve-field-metadata-standard-override.util'; import { resolveFieldMetadataStandardOverride } from 'src/engine/metadata-modules/field-metadata/utils/resolve-field-metadata-standard-override.util';
import { IndexFieldMetadataDTO } from 'src/engine/metadata-modules/index-metadata/dtos/index-field-metadata.dto'; import { IndexFieldMetadataDTO } from 'src/engine/metadata-modules/index-metadata/dtos/index-field-metadata.dto';
import { IndexMetadataDTO } from 'src/engine/metadata-modules/index-metadata/dtos/index-metadata.dto'; import { IndexMetadataDTO } from 'src/engine/metadata-modules/index-metadata/dtos/index-metadata.dto';
import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity';
import { WorkspaceMetadataCacheService } from 'src/engine/metadata-modules/workspace-metadata-cache/services/workspace-metadata-cache.service'; import { WorkspaceMetadataCacheService } from 'src/engine/metadata-modules/workspace-metadata-cache/services/workspace-metadata-cache.service';
export type RelationMetadataLoaderPayload = { export type RelationMetadataLoaderPayload = {
@ -52,18 +51,18 @@ export type MorphRelationLoaderPayload = {
export type FieldMetadataLoaderPayload = { export type FieldMetadataLoaderPayload = {
workspaceId: string; workspaceId: string;
objectMetadata: Pick<ObjectMetadataInterface, 'id'>; objectMetadata: Pick<ObjectMetadataEntity, 'id'>;
locale?: keyof typeof APP_LOCALES; locale?: keyof typeof APP_LOCALES;
}; };
export type IndexMetadataLoaderPayload = { export type IndexMetadataLoaderPayload = {
workspaceId: string; workspaceId: string;
objectMetadata: Pick<ObjectMetadataInterface, 'id'>; objectMetadata: Pick<ObjectMetadataEntity, 'id'>;
}; };
export type IndexFieldMetadataLoaderPayload = { export type IndexFieldMetadataLoaderPayload = {
workspaceId: string; workspaceId: string;
objectMetadata: Pick<ObjectMetadataInterface, 'id'>; objectMetadata: Pick<ObjectMetadataEntity, 'id'>;
indexMetadata: Pick<IndexMetadataInterface, 'id'>; indexMetadata: Pick<IndexMetadataInterface, 'id'>;
}; };

View File

@ -1,3 +0,0 @@
import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity';
export interface ObjectMetadataInterface extends ObjectMetadataEntity {}

View File

@ -1,12 +1,11 @@
import { ObjectMetadataInterface } from 'src/engine/metadata-modules/field-metadata/interfaces/object-metadata.interface'; import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity';
import { import {
ObjectMetadataException, ObjectMetadataException,
ObjectMetadataExceptionCode, ObjectMetadataExceptionCode,
} from 'src/engine/metadata-modules/object-metadata/object-metadata.exception'; } from 'src/engine/metadata-modules/object-metadata/object-metadata.exception';
export const assertMutationNotOnRemoteObject = ( export const assertMutationNotOnRemoteObject = (
objectMetadataItem: Pick<ObjectMetadataInterface, 'isRemote'>, objectMetadataItem: Pick<ObjectMetadataEntity, 'isRemote'>,
) => { ) => {
if (objectMetadataItem.isRemote) { if (objectMetadataItem.isRemote) {
throw new ObjectMetadataException( throw new ObjectMetadataException(

View File

@ -1,10 +1,10 @@
import { ObjectMetadataInterface } from 'src/engine/metadata-modules/field-metadata/interfaces/object-metadata.interface';
import { IndexMetadataInterface } from 'src/engine/metadata-modules/index-metadata/interfaces/index-metadata.interface'; import { IndexMetadataInterface } from 'src/engine/metadata-modules/index-metadata/interfaces/index-metadata.interface';
import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity';
import { FieldMetadataMap } from 'src/engine/metadata-modules/types/field-metadata-map'; import { FieldMetadataMap } from 'src/engine/metadata-modules/types/field-metadata-map';
export type ObjectMetadataItemWithFieldMaps = Omit< export type ObjectMetadataItemWithFieldMaps = Omit<
ObjectMetadataInterface, ObjectMetadataEntity,
'fields' 'fields'
> & { > & {
fieldsById: FieldMetadataMap; fieldsById: FieldMetadataMap;

View File

@ -1,15 +1,14 @@
import omit from 'lodash.omit'; import omit from 'lodash.omit';
import { FieldMetadataType } from 'twenty-shared/types'; import { FieldMetadataType } from 'twenty-shared/types';
import { ObjectMetadataInterface } from 'src/engine/metadata-modules/field-metadata/interfaces/object-metadata.interface'; import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity';
import { FieldMetadataMap } from 'src/engine/metadata-modules/types/field-metadata-map'; import { FieldMetadataMap } from 'src/engine/metadata-modules/types/field-metadata-map';
import { ObjectMetadataItemWithFieldMaps } from 'src/engine/metadata-modules/types/object-metadata-item-with-field-maps'; import { ObjectMetadataItemWithFieldMaps } from 'src/engine/metadata-modules/types/object-metadata-item-with-field-maps';
import { ObjectMetadataMaps } from 'src/engine/metadata-modules/types/object-metadata-maps'; import { ObjectMetadataMaps } from 'src/engine/metadata-modules/types/object-metadata-maps';
import { isFieldMetadataEntityOfType } from 'src/engine/utils/is-field-metadata-of-type.util'; import { isFieldMetadataEntityOfType } from 'src/engine/utils/is-field-metadata-of-type.util';
export const generateObjectMetadataMaps = ( export const generateObjectMetadataMaps = (
objectMetadataCollection: ObjectMetadataInterface[], objectMetadataCollection: ObjectMetadataEntity[],
): ObjectMetadataMaps => { ): ObjectMetadataMaps => {
const objectMetadataMaps: ObjectMetadataMaps = { const objectMetadataMaps: ObjectMetadataMaps = {
byId: {}, byId: {},

View File

@ -1,12 +1,11 @@
import omit from 'lodash.omit'; import omit from 'lodash.omit';
import { ObjectMetadataInterface } from 'src/engine/metadata-modules/field-metadata/interfaces/object-metadata.interface'; import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity';
import { ObjectMetadataItemWithFieldMaps } from 'src/engine/metadata-modules/types/object-metadata-item-with-field-maps'; import { ObjectMetadataItemWithFieldMaps } from 'src/engine/metadata-modules/types/object-metadata-item-with-field-maps';
export const getObjectMetadataFromObjectMetadataItemWithFieldMaps = ( export const getObjectMetadataFromObjectMetadataItemWithFieldMaps = (
objectMetadataMapItem: ObjectMetadataItemWithFieldMaps, objectMetadataMapItem: ObjectMetadataItemWithFieldMaps,
): ObjectMetadataInterface => { ): ObjectMetadataEntity => {
return { return {
...omit(objectMetadataMapItem, [ ...omit(objectMetadataMapItem, [
'fieldsById', 'fieldsById',

View File

@ -4,11 +4,11 @@ import { FieldMetadataType } from 'twenty-shared/types';
import { isDefined } from 'twenty-shared/utils'; import { isDefined } from 'twenty-shared/utils';
import { RelationType } from 'src/engine/metadata-modules/field-metadata/interfaces/relation-type.interface'; import { RelationType } from 'src/engine/metadata-modules/field-metadata/interfaces/relation-type.interface';
import { ObjectMetadataInterface } from 'src/engine/metadata-modules/field-metadata/interfaces/object-metadata.interface';
import { FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity'; import { FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity';
import { isCompositeFieldMetadataType } from 'src/engine/metadata-modules/field-metadata/utils/is-composite-field-metadata-type.util'; import { isCompositeFieldMetadataType } from 'src/engine/metadata-modules/field-metadata/utils/is-composite-field-metadata-type.util';
import { getUniqueConstraintsFields } from 'src/engine/metadata-modules/index-metadata/utils/getUniqueConstraintsFields.util'; import { getUniqueConstraintsFields } from 'src/engine/metadata-modules/index-metadata/utils/getUniqueConstraintsFields.util';
import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity';
import { ObjectMetadataItemWithFieldMaps } from 'src/engine/metadata-modules/types/object-metadata-item-with-field-maps'; import { ObjectMetadataItemWithFieldMaps } from 'src/engine/metadata-modules/types/object-metadata-item-with-field-maps';
import { ObjectMetadataMaps } from 'src/engine/metadata-modules/types/object-metadata-maps'; import { ObjectMetadataMaps } from 'src/engine/metadata-modules/types/object-metadata-maps';
import { ConnectObject } from 'src/engine/twenty-orm/entity-manager/types/query-deep-partial-entity-with-relation-connect.type'; import { ConnectObject } from 'src/engine/twenty-orm/entity-manager/types/query-deep-partial-entity-with-relation-connect.type';
@ -241,7 +241,7 @@ const checkUniqueConstraintFullyPopulated = (
) => { ) => {
const uniqueConstraintsFields = getUniqueConstraintsFields< const uniqueConstraintsFields = getUniqueConstraintsFields<
FieldMetadataEntity, FieldMetadataEntity,
ObjectMetadataInterface ObjectMetadataEntity
>({ >({
...objectMetadata, ...objectMetadata,
fields: Object.values(objectMetadata.fieldsById), fields: Object.values(objectMetadata.fieldsById),

View File

@ -1,9 +1,9 @@
import { ObjectMetadataInterface } from 'src/engine/metadata-modules/field-metadata/interfaces/object-metadata.interface'; import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity';
import { computeTableName } from './compute-table-name.util'; import { computeTableName } from './compute-table-name.util';
export const computeObjectTargetTable = ( export const computeObjectTargetTable = (
objectMetadata: Pick<ObjectMetadataInterface, 'nameSingular' | 'isCustom'>, objectMetadata: Pick<ObjectMetadataEntity, 'nameSingular' | 'isCustom'>,
) => { ) => {
return computeTableName(objectMetadata.nameSingular, objectMetadata.isCustom); return computeTableName(objectMetadata.nameSingular, objectMetadata.isCustom);
}; };

View File

@ -1,11 +1,11 @@
import { WorkspaceResolverBuilderMethodNames } from 'src/engine/api/graphql/workspace-resolver-builder/interfaces/workspace-resolvers-builder.interface'; import { WorkspaceResolverBuilderMethodNames } from 'src/engine/api/graphql/workspace-resolver-builder/interfaces/workspace-resolvers-builder.interface';
import { ObjectMetadataInterface } from 'src/engine/metadata-modules/field-metadata/interfaces/object-metadata.interface';
import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity';
import { camelCase } from 'src/utils/camel-case'; import { camelCase } from 'src/utils/camel-case';
import { pascalCase } from 'src/utils/pascal-case'; import { pascalCase } from 'src/utils/pascal-case';
export const getResolverName = ( export const getResolverName = (
objectMetadata: Pick<ObjectMetadataInterface, 'namePlural' | 'nameSingular'>, objectMetadata: Pick<ObjectMetadataEntity, 'namePlural' | 'nameSingular'>,
type: WorkspaceResolverBuilderMethodNames, type: WorkspaceResolverBuilderMethodNames,
) => { ) => {
switch (type) { switch (type) {

View File

@ -1,12 +1,13 @@
import { ObjectMetadataInterface } from 'src/engine/metadata-modules/field-metadata/interfaces/object-metadata.interface';
import { import {
ComputedPartialFieldMetadata, ComputedPartialFieldMetadata,
PartialComputedFieldMetadata, PartialComputedFieldMetadata,
PartialFieldMetadata, PartialFieldMetadata,
} from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/partial-field-metadata.interface'; } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/partial-field-metadata.interface';
import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity';
export type PartialWorkspaceEntity = Pick< export type PartialWorkspaceEntity = Pick<
ObjectMetadataInterface, ObjectMetadataEntity,
| 'workspaceId' | 'workspaceId'
| 'nameSingular' | 'nameSingular'
| 'namePlural' | 'namePlural'

View File

@ -1,10 +1,9 @@
import { ObjectMetadataInterface } from 'src/engine/metadata-modules/field-metadata/interfaces/object-metadata.interface';
import { ObjectRecordEvent } from 'src/engine/core-modules/event-emitter/types/object-record-event.event'; import { ObjectRecordEvent } from 'src/engine/core-modules/event-emitter/types/object-record-event.event';
import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity';
export type ObjectRecordEventForWebhook = Omit< export type ObjectRecordEventForWebhook = Omit<
ObjectRecordEvent, ObjectRecordEvent,
'objectMetadata' 'objectMetadata'
> & { > & {
objectMetadata: Pick<ObjectMetadataInterface, 'id' | 'nameSingular'>; objectMetadata: Pick<ObjectMetadataEntity, 'id' | 'nameSingular'>;
}; };