Move capitalize into twenty-shared (#9414)

capitalize had been moved into twenty-shared. Let's remove the
duplicates in server and front !
This commit is contained in:
Marie
2025-01-07 15:25:29 +01:00
committed by GitHub
parent 7b70f7d93b
commit 7d7955fc65
131 changed files with 155 additions and 181 deletions

View File

@ -1,3 +1,4 @@
import { capitalize } from 'twenty-shared';
import { WhereExpressionBuilder } from 'typeorm';
import { FieldMetadataInterface } from 'src/engine/metadata-modules/field-metadata/interfaces/field-metadata.interface';
@ -11,7 +12,6 @@ import { compositeTypeDefinitions } from 'src/engine/metadata-modules/field-meta
import { isCompositeFieldMetadataType } from 'src/engine/metadata-modules/field-metadata/utils/is-composite-field-metadata-type.util';
import { FieldMetadataMap } from 'src/engine/metadata-modules/types/field-metadata-map';
import { CompositeFieldMetadataType } from 'src/engine/metadata-modules/workspace-migration/factories/composite-column-action.factory';
import { capitalize } from 'src/utils/capitalize';
const ARRAY_OPERATORS = ['in', 'contains', 'notContains'];

View File

@ -1,3 +1,5 @@
import { capitalize } from 'twenty-shared';
import {
ObjectRecordOrderBy,
OrderByDirection,
@ -12,7 +14,6 @@ import { compositeTypeDefinitions } from 'src/engine/metadata-modules/field-meta
import { isCompositeFieldMetadataType } from 'src/engine/metadata-modules/field-metadata/utils/is-composite-field-metadata-type.util';
import { FieldMetadataMap } from 'src/engine/metadata-modules/types/field-metadata-map';
import { CompositeFieldMetadataType } from 'src/engine/metadata-modules/workspace-migration/factories/composite-column-action.factory';
import { capitalize } from 'src/utils/capitalize';
export class GraphqlQueryOrderFieldParser {
private fieldMetadataMapByName: FieldMetadataMap;

View File

@ -1,3 +1,5 @@
import { capitalize } from 'twenty-shared';
import { FieldMetadataInterface } from 'src/engine/metadata-modules/field-metadata/interfaces/field-metadata.interface';
import { GraphqlQuerySelectedFieldsAggregateParser } from 'src/engine/api/graphql/graphql-query-runner/graphql-query-parsers/graphql-query-selected-fields/graphql-selected-fields-aggregate.parser';
@ -7,7 +9,6 @@ import { isCompositeFieldMetadataType } from 'src/engine/metadata-modules/field-
import { ObjectMetadataMaps } from 'src/engine/metadata-modules/types/object-metadata-maps';
import { CompositeFieldMetadataType } from 'src/engine/metadata-modules/workspace-migration/factories/composite-column-action.factory';
import { isRelationFieldMetadataType } from 'src/engine/utils/is-relation-field-metadata-type.util';
import { capitalize } from 'src/utils/capitalize';
export type GraphqlQuerySelectedFieldsResult = {
select: Record<string, any>;

View File

@ -1,6 +1,7 @@
import { Inject, Injectable } from '@nestjs/common';
import graphqlFields from 'graphql-fields';
import { capitalize } from 'twenty-shared';
import { DataSource, ObjectLiteral } from 'typeorm';
import { ObjectRecord } from 'src/engine/api/graphql/workspace-query-builder/interfaces/object-record.interface';
@ -22,7 +23,6 @@ import { workspaceQueryRunnerGraphqlApiExceptionHandler } from 'src/engine/api/g
import { WorkspaceQueryHookService } from 'src/engine/api/graphql/workspace-query-runner/workspace-query-hook/workspace-query-hook.service';
import { WorkspaceRepository } from 'src/engine/twenty-orm/repository/workspace.repository';
import { TwentyORMGlobalManager } from 'src/engine/twenty-orm/twenty-orm-global.manager';
import { capitalize } from 'src/utils/capitalize';
export type GraphqlQueryResolverExecutionArgs<Input extends ResolverArgs> = {
args: Input;

View File

@ -1,13 +1,13 @@
import { GraphQLISODateTime } from '@nestjs/graphql';
import { GraphQLFloat, GraphQLInt, GraphQLScalarType } from 'graphql';
import { getSubfieldsForAggregateOperation } from 'twenty-shared';
import { capitalize } from 'twenty-shared';
import { FieldMetadataInterface } from 'src/engine/metadata-modules/field-metadata/interfaces/field-metadata.interface';
import { AGGREGATE_OPERATIONS } from 'src/engine/api/graphql/graphql-query-runner/constants/aggregate-operations.constant';
import { FieldMetadataType } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity';
import { capitalize } from 'src/utils/capitalize';
import { getSubfieldsForAggregateOperation } from 'src/engine/twenty-orm/utils/get-subfields-for-aggregate-operation.util';
export type AggregationField = {
type: GraphQLScalarType;

View File

@ -1,6 +1,7 @@
import { Injectable } from '@nestjs/common';
import { capitalize } from 'src/utils/capitalize';
import { capitalize } from 'twenty-shared';
import { mapFieldMetadataToGraphqlQuery } from 'src/engine/api/rest/core/query-builder/utils/map-field-metadata-to-graphql-query.utils';
@Injectable()

View File

@ -1,6 +1,7 @@
import { Injectable } from '@nestjs/common';
import { capitalize } from 'src/utils/capitalize';
import { capitalize } from 'twenty-shared';
import { mapFieldMetadataToGraphqlQuery } from 'src/engine/api/rest/core/query-builder/utils/map-field-metadata-to-graphql-query.utils';
@Injectable()

View File

@ -1,6 +1,6 @@
import { Injectable } from '@nestjs/common';
import { capitalize } from 'src/utils/capitalize';
import { capitalize } from 'twenty-shared';
@Injectable()
export class DeleteQueryFactory {

View File

@ -1,7 +1,8 @@
import { Injectable } from '@nestjs/common';
import { capitalize } from 'twenty-shared';
import { mapFieldMetadataToGraphqlQuery } from 'src/engine/api/rest/core/query-builder/utils/map-field-metadata-to-graphql-query.utils';
import { capitalize } from 'src/utils/capitalize';
@Injectable()
export class FindDuplicatesQueryFactory {

View File

@ -1,6 +1,7 @@
import { Injectable } from '@nestjs/common';
import { capitalize } from 'src/utils/capitalize';
import { capitalize } from 'twenty-shared';
import { mapFieldMetadataToGraphqlQuery } from 'src/engine/api/rest/core/query-builder/utils/map-field-metadata-to-graphql-query.utils';
@Injectable()

View File

@ -1,6 +1,7 @@
import { Injectable } from '@nestjs/common';
import { capitalize } from 'src/utils/capitalize';
import { capitalize } from 'twenty-shared';
import { mapFieldMetadataToGraphqlQuery } from 'src/engine/api/rest/core/query-builder/utils/map-field-metadata-to-graphql-query.utils';
@Injectable()

View File

@ -1,6 +1,7 @@
import { Injectable } from '@nestjs/common';
import { capitalize } from 'src/utils/capitalize';
import { capitalize } from 'twenty-shared';
import { mapFieldMetadataToGraphqlQuery } from 'src/engine/api/rest/core/query-builder/utils/map-field-metadata-to-graphql-query.utils';
@Injectable()

View File

@ -1,6 +1,7 @@
import { Injectable } from '@nestjs/common';
import { capitalize } from 'src/utils/capitalize';
import { capitalize } from 'twenty-shared';
import { fetchMetadataFields } from 'src/engine/api/rest/metadata/query-builder/utils/fetch-metadata-fields.utils';
@Injectable()

View File

@ -1,6 +1,6 @@
import { Injectable } from '@nestjs/common';
import { capitalize } from 'src/utils/capitalize';
import { capitalize } from 'twenty-shared';
@Injectable()
export class DeleteMetadataQueryFactory {

View File

@ -1,6 +1,7 @@
import { Injectable } from '@nestjs/common';
import { capitalize } from 'src/utils/capitalize';
import { capitalize } from 'twenty-shared';
import { fetchMetadataFields } from 'src/engine/api/rest/metadata/query-builder/utils/fetch-metadata-fields.utils';
@Injectable()

View File

@ -1,6 +1,7 @@
import { Injectable } from '@nestjs/common';
import { capitalize } from 'src/utils/capitalize';
import { capitalize } from 'twenty-shared';
import { fetchMetadataFields } from 'src/engine/api/rest/metadata/query-builder/utils/fetch-metadata-fields.utils';
@Injectable()

View File

@ -1,6 +1,7 @@
import { Injectable } from '@nestjs/common';
import { capitalize } from 'src/utils/capitalize';
import { capitalize } from 'twenty-shared';
import { fetchMetadataFields } from 'src/engine/api/rest/metadata/query-builder/utils/fetch-metadata-fields.utils';
@Injectable()

View File

@ -2,7 +2,9 @@ import { Injectable } from '@nestjs/common';
import { Request } from 'express';
import { OpenAPIV3_1 } from 'openapi-types';
import { capitalize } from 'twenty-shared';
import { DatabaseEventAction } from 'src/engine/api/graphql/graphql-query-runner/enums/database-event-action';
import { AccessTokenService } from 'src/engine/core-modules/auth/token/services/access-token.service';
import { EnvironmentService } from 'src/engine/core-modules/environment/environment.service';
import { baseSchema } from 'src/engine/core-modules/open-api/utils/base-schema.utils';
@ -35,9 +37,7 @@ import {
getUpdateOneResponse200,
} from 'src/engine/core-modules/open-api/utils/responses.utils';
import { ObjectMetadataService } from 'src/engine/metadata-modules/object-metadata/object-metadata.service';
import { capitalize } from 'src/utils/capitalize';
import { getServerUrl } from 'src/utils/get-server-url';
import { DatabaseEventAction } from 'src/engine/api/graphql/graphql-query-runner/enums/database-event-action';
@Injectable()
export class OpenApiService {

View File

@ -1,4 +1,5 @@
import { OpenAPIV3_1 } from 'openapi-types';
import { capitalize } from 'twenty-shared';
import {
computeDepthParameters,
@ -15,7 +16,6 @@ import {
} from 'src/engine/metadata-modules/field-metadata/field-metadata.entity';
import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity';
import { RelationMetadataType } from 'src/engine/metadata-modules/relation-metadata/relation-metadata.entity';
import { capitalize } from 'src/utils/capitalize';
type Property = OpenAPIV3_1.SchemaObject;

View File

@ -1,7 +1,7 @@
import { OpenAPIV3_1 } from 'openapi-types';
import { capitalize } from 'twenty-shared';
import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity';
import { capitalize } from 'src/utils/capitalize';
export const computeSchemaTags = (
items: ObjectMetadataEntity[],

View File

@ -1,8 +1,8 @@
import { OpenAPIV3_1 } from 'openapi-types';
import { capitalize } from 'twenty-shared';
import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity';
import { capitalize } from 'src/utils/capitalize';
import { DatabaseEventAction } from 'src/engine/api/graphql/graphql-query-runner/enums/database-event-action';
import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity';
export const computeWebhooks = (
type: DatabaseEventAction,

View File

@ -1,4 +1,5 @@
import { OpenAPIV3_1 } from 'openapi-types';
import { capitalize } from 'twenty-shared';
import {
getArrayRequestBody,
@ -17,7 +18,6 @@ import {
getUpdateOneResponse200,
} from 'src/engine/core-modules/open-api/utils/responses.utils';
import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity';
import { capitalize } from 'src/utils/capitalize';
export const computeBatchPath = (
item: ObjectMetadataEntity,

View File

@ -1,5 +1,6 @@
import { capitalize } from 'twenty-shared';
import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity';
import { capitalize } from 'src/utils/capitalize';
export const getFindManyResponse200 = (
item: Pick<ObjectMetadataEntity, 'nameSingular' | 'namePlural'>,

View File

@ -1,6 +1,7 @@
import { Injectable } from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm';
import { capitalize } from 'twenty-shared';
import { In, Repository } from 'typeorm';
import { FieldMetadataSettings } from 'src/engine/metadata-modules/field-metadata/interfaces/field-metadata-settings.interface';
@ -29,7 +30,6 @@ import {
createForeignKeyDeterministicUuid,
createRelationDeterministicUuid,
} from 'src/engine/workspace-manager/workspace-sync-metadata/utils/create-deterministic-uuid.util';
import { capitalize } from 'src/utils/capitalize';
const DEFAULT_RELATIONS_OBJECTS_STANDARD_IDS = [
STANDARD_OBJECT_IDS.timelineActivity,

View File

@ -1,4 +1,4 @@
import { capitalize } from 'src/utils/capitalize';
import { capitalize } from 'twenty-shared';
export const buildDescriptionForRelationFieldMetadataOnFromField = ({
relationObjectMetadataNamePlural,

View File

@ -1,4 +1,4 @@
import { capitalize } from 'src/utils/capitalize';
import { capitalize } from 'twenty-shared';
export const buildDescriptionForRelationFieldMetadataOnToField = ({
relationObjectMetadataNamePlural,

View File

@ -1,7 +1,8 @@
import { Inject } from '@nestjs/common';
import { capitalize } from 'twenty-shared';
import { convertClassNameToObjectMetadataName } from 'src/engine/workspace-manager/workspace-sync-metadata/utils/convert-class-to-object-metadata-name.util';
import { capitalize } from 'src/utils/capitalize';
export const InjectObjectMetadataRepository = (objectMetadata: any) => {
const token = `${capitalize(

View File

@ -1,10 +1,11 @@
import { Global, Module, DynamicModule, Provider } from '@nestjs/common';
import { DynamicModule, Global, Module, Provider } from '@nestjs/common';
import { capitalize } from 'twenty-shared';
import { metadataToRepositoryMapping } from 'src/engine/object-metadata-repository/metadata-to-repository.mapping';
import { WorkspaceDataSourceModule } from 'src/engine/workspace-datasource/workspace-datasource.module';
import { WorkspaceDataSourceService } from 'src/engine/workspace-datasource/workspace-datasource.service';
import { convertClassNameToObjectMetadataName } from 'src/engine/workspace-manager/workspace-sync-metadata/utils/convert-class-to-object-metadata-name.util';
import { capitalize } from 'src/utils/capitalize';
@Global()
@Module({})

View File

@ -1,5 +1,7 @@
import { Injectable } from '@nestjs/common';
import { capitalize } from 'twenty-shared';
import { ObjectMetadataSeed } from 'src/engine/seeder/interfaces/object-metadata-seed';
import { DEV_SEED_WORKSPACE_MEMBER_IDS } from 'src/database/typeorm-seeds/workspace/workspace-members';
@ -11,7 +13,6 @@ import { isCompositeFieldMetadataType } from 'src/engine/metadata-modules/field-
import { ObjectMetadataService } from 'src/engine/metadata-modules/object-metadata/object-metadata.service';
import { computeTableName } from 'src/engine/utils/compute-table-name.util';
import { WorkspaceDataSourceService } from 'src/engine/workspace-datasource/workspace-datasource.service';
import { capitalize } from 'src/utils/capitalize';
import { isDefined } from 'src/utils/is-defined';
@Injectable()

View File

@ -1,4 +1,5 @@
import { capitalize } from 'src/utils/capitalize';
import { capitalize } from 'twenty-shared';
import { isDefined } from 'src/utils/is-defined';
export const formatColumnNamesFromCompositeFieldAndSubfields = (

View File

@ -1,3 +1,5 @@
import { capitalize } from 'twenty-shared';
import { FieldMetadataInterface } from 'src/engine/metadata-modules/field-metadata/interfaces/field-metadata.interface';
import { compositeTypeDefinitions } from 'src/engine/metadata-modules/field-metadata/composite-types';
@ -5,7 +7,6 @@ import { FieldMetadataType } from 'src/engine/metadata-modules/field-metadata/fi
import { isCompositeFieldMetadataType } from 'src/engine/metadata-modules/field-metadata/utils/is-composite-field-metadata-type.util';
import { ObjectMetadataItemWithFieldMaps } from 'src/engine/metadata-modules/types/object-metadata-item-with-field-maps';
import { CompositeFieldMetadataType } from 'src/engine/metadata-modules/workspace-migration/factories/composite-column-action.factory';
import { capitalize } from 'src/utils/capitalize';
export function formatData<T>(
data: T,

View File

@ -0,0 +1,42 @@
import { FieldMetadataType } 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';
export const getSubfieldsForAggregateOperation = (
fieldType: FieldMetadataType,
): string[] | undefined => {
if (!isCompositeFieldMetadataType(fieldType)) {
return undefined;
} else {
switch (fieldType) {
case FieldMetadataType.CURRENCY:
return ['amountMicros', 'currencyCode'];
case FieldMetadataType.FULL_NAME:
return ['firstName', 'lastName'];
case FieldMetadataType.ADDRESS:
return [
'addressStreet1',
'addressStreet2',
'addressCity',
'addressPostcode',
'addressState',
'addressCountry',
'addressLat',
'addressLng',
];
case FieldMetadataType.LINKS:
return ['primaryLinkUrl'];
case FieldMetadataType.ACTOR:
return ['workspaceMemberId'];
case FieldMetadataType.EMAILS:
return ['primaryEmail'];
case FieldMetadataType.PHONES:
return [
'primaryPhoneNumber',
'primaryPhoneCountryCode',
'primaryPhoneCallingCode',
];
default:
throw new Error(`Unsupported composite field type: ${fieldType}`);
}
}
};

View File

@ -1,5 +1,6 @@
import { Injectable } from '@nestjs/common';
import { capitalize } from 'twenty-shared';
import {
EntityManager,
EntityTarget,
@ -29,7 +30,6 @@ import { CompositeFieldMetadataType } from 'src/engine/metadata-modules/workspac
import { FieldMetadataUpdate } from 'src/engine/workspace-manager/workspace-migration-builder/factories/workspace-migration-field.factory';
import { ObjectMetadataUpdate } from 'src/engine/workspace-manager/workspace-migration-builder/factories/workspace-migration-object.factory';
import { WorkspaceSyncStorage } from 'src/engine/workspace-manager/workspace-sync-metadata/storage/workspace-sync.storage';
import { capitalize } from 'src/utils/capitalize';
@Injectable()
export class WorkspaceMetadataUpdaterService {