diff --git a/packages/twenty-front/src/modules/object-record/utils/generateEmptyFieldValue.ts b/packages/twenty-front/src/modules/object-record/utils/generateEmptyFieldValue.ts index d7dc1f935..95747a055 100644 --- a/packages/twenty-front/src/modules/object-record/utils/generateEmptyFieldValue.ts +++ b/packages/twenty-front/src/modules/object-record/utils/generateEmptyFieldValue.ts @@ -90,6 +90,7 @@ export const generateEmptyFieldValue = ( case FieldMetadataType.Actor: { return { source: 'MANUAL', + workspaceMemberId: null, name: '', }; } diff --git a/packages/twenty-server/src/engine/api/graphql/workspace-query-builder/factories/create-many-query.factory.ts b/packages/twenty-server/src/engine/api/graphql/workspace-query-builder/factories/create-many-query.factory.ts index f44d1fbcb..d1a160be0 100644 --- a/packages/twenty-server/src/engine/api/graphql/workspace-query-builder/factories/create-many-query.factory.ts +++ b/packages/twenty-server/src/engine/api/graphql/workspace-query-builder/factories/create-many-query.factory.ts @@ -2,15 +2,15 @@ import { Injectable, Logger } from '@nestjs/common'; import { v4 as uuidv4 } from 'uuid'; -import { WorkspaceQueryBuilderOptions } from 'src/engine/api/graphql/workspace-query-builder/interfaces/workspace-query-builder-options.interface'; import { Record as IRecord } from 'src/engine/api/graphql/workspace-query-builder/interfaces/record.interface'; +import { WorkspaceQueryBuilderOptions } from 'src/engine/api/graphql/workspace-query-builder/interfaces/workspace-query-builder-options.interface'; import { CreateManyResolverArgs } from 'src/engine/api/graphql/workspace-resolver-builder/interfaces/workspace-resolvers-builder.interface'; import { stringifyWithoutKeyQuote } from 'src/engine/api/graphql/workspace-query-builder/utils/stringify-without-key-quote.util'; import { computeObjectTargetTable } from 'src/engine/utils/compute-object-target-table.util'; -import { FieldsStringFactory } from './fields-string.factory'; import { ArgsAliasFactory } from './args-alias.factory'; +import { FieldsStringFactory } from './fields-string.factory'; @Injectable() export class CreateManyQueryFactory { @@ -30,8 +30,9 @@ export class CreateManyQueryFactory { options.fieldMetadataCollection, options.objectMetadataCollection, ); - const computedArgs = this.argsAliasFactory.create( - args, + + const computedArgsData = this.argsAliasFactory.create( + args.data, options.fieldMetadataCollection, ); @@ -40,7 +41,7 @@ export class CreateManyQueryFactory { insertInto${computeObjectTargetTable( options.objectMetadataItem, )}Collection(objects: ${stringifyWithoutKeyQuote( - computedArgs.data.map((datum) => ({ + computedArgsData.map((datum) => ({ id: uuidv4(), ...datum, })), diff --git a/packages/twenty-server/src/engine/api/graphql/workspace-query-builder/factories/find-many-query.factory.ts b/packages/twenty-server/src/engine/api/graphql/workspace-query-builder/factories/find-many-query.factory.ts index ec8420abb..476695f3c 100644 --- a/packages/twenty-server/src/engine/api/graphql/workspace-query-builder/factories/find-many-query.factory.ts +++ b/packages/twenty-server/src/engine/api/graphql/workspace-query-builder/factories/find-many-query.factory.ts @@ -1,10 +1,10 @@ import { Injectable, Logger } from '@nestjs/common'; -import { WorkspaceQueryBuilderOptions } from 'src/engine/api/graphql/workspace-query-builder/interfaces/workspace-query-builder-options.interface'; import { RecordFilter, RecordOrderBy, } from 'src/engine/api/graphql/workspace-query-builder/interfaces/record.interface'; +import { WorkspaceQueryBuilderOptions } from 'src/engine/api/graphql/workspace-query-builder/interfaces/workspace-query-builder-options.interface'; import { FindManyResolverArgs } from 'src/engine/api/graphql/workspace-resolver-builder/interfaces/workspace-resolvers-builder.interface'; import { computeObjectTargetTable } from 'src/engine/utils/compute-object-target-table.util'; diff --git a/packages/twenty-server/src/engine/api/graphql/workspace-query-builder/factories/update-many-query.factory.ts b/packages/twenty-server/src/engine/api/graphql/workspace-query-builder/factories/update-many-query.factory.ts index f55e512ba..b9e6bf5d4 100644 --- a/packages/twenty-server/src/engine/api/graphql/workspace-query-builder/factories/update-many-query.factory.ts +++ b/packages/twenty-server/src/engine/api/graphql/workspace-query-builder/factories/update-many-query.factory.ts @@ -7,9 +7,9 @@ import { import { WorkspaceQueryBuilderOptions } from 'src/engine/api/graphql/workspace-query-builder/interfaces/workspace-query-builder-options.interface'; import { UpdateManyResolverArgs } from 'src/engine/api/graphql/workspace-resolver-builder/interfaces/workspace-resolvers-builder.interface'; -import { stringifyWithoutKeyQuote } from 'src/engine/api/graphql/workspace-query-builder/utils/stringify-without-key-quote.util'; -import { FieldsStringFactory } from 'src/engine/api/graphql/workspace-query-builder/factories/fields-string.factory'; import { ArgsAliasFactory } from 'src/engine/api/graphql/workspace-query-builder/factories/args-alias.factory'; +import { FieldsStringFactory } from 'src/engine/api/graphql/workspace-query-builder/factories/fields-string.factory'; +import { stringifyWithoutKeyQuote } from 'src/engine/api/graphql/workspace-query-builder/utils/stringify-without-key-quote.util'; import { computeObjectTargetTable } from 'src/engine/utils/compute-object-target-table.util'; export interface UpdateManyQueryFactoryOptions @@ -37,13 +37,13 @@ export class UpdateManyQueryFactory { options.objectMetadataCollection, ); - const computedArgs = this.argsAliasFactory.create( - args, + const computedArgsData = this.argsAliasFactory.create( + args.data, options.fieldMetadataCollection, ); const argsData = { - ...computedArgs.data, + ...computedArgsData, updatedAt: new Date().toISOString(), }; diff --git a/packages/twenty-server/src/engine/api/graphql/workspace-query-builder/factories/update-one-query.factory.ts b/packages/twenty-server/src/engine/api/graphql/workspace-query-builder/factories/update-one-query.factory.ts index 57df907d9..c9e863513 100644 --- a/packages/twenty-server/src/engine/api/graphql/workspace-query-builder/factories/update-one-query.factory.ts +++ b/packages/twenty-server/src/engine/api/graphql/workspace-query-builder/factories/update-one-query.factory.ts @@ -1,14 +1,14 @@ import { Injectable, Logger } from '@nestjs/common'; -import { WorkspaceQueryBuilderOptions } from 'src/engine/api/graphql/workspace-query-builder/interfaces/workspace-query-builder-options.interface'; import { Record as IRecord } from 'src/engine/api/graphql/workspace-query-builder/interfaces/record.interface'; +import { WorkspaceQueryBuilderOptions } from 'src/engine/api/graphql/workspace-query-builder/interfaces/workspace-query-builder-options.interface'; import { UpdateOneResolverArgs } from 'src/engine/api/graphql/workspace-resolver-builder/interfaces/workspace-resolvers-builder.interface'; import { stringifyWithoutKeyQuote } from 'src/engine/api/graphql/workspace-query-builder/utils/stringify-without-key-quote.util'; import { computeObjectTargetTable } from 'src/engine/utils/compute-object-target-table.util'; -import { FieldsStringFactory } from './fields-string.factory'; import { ArgsAliasFactory } from './args-alias.factory'; +import { FieldsStringFactory } from './fields-string.factory'; @Injectable() export class UpdateOneQueryFactory { @@ -28,13 +28,14 @@ export class UpdateOneQueryFactory { options.fieldMetadataCollection, options.objectMetadataCollection, ); - const computedArgs = this.argsAliasFactory.create( - args, + + const computedArgsData = this.argsAliasFactory.create( + args.data, options.fieldMetadataCollection, ); const argsData = { - ...computedArgs.data, + ...computedArgsData, id: undefined, // do not allow updating an existing object's id updatedAt: new Date().toISOString(), }; @@ -45,7 +46,7 @@ export class UpdateOneQueryFactory { options.objectMetadataItem, )}Collection(set: ${stringifyWithoutKeyQuote( argsData, - )}, filter: { id: { eq: "${computedArgs.id}" } }) { + )}, filter: { id: { eq: "${args.id}" } }) { affectedCount records { ${fieldsString} diff --git a/packages/twenty-server/src/engine/metadata-modules/object-metadata/object-metadata.service.ts b/packages/twenty-server/src/engine/metadata-modules/object-metadata/object-metadata.service.ts index 66a879a74..7cc2e4ea1 100644 --- a/packages/twenty-server/src/engine/metadata-modules/object-metadata/object-metadata.service.ts +++ b/packages/twenty-server/src/engine/metadata-modules/object-metadata/object-metadata.service.ts @@ -265,6 +265,20 @@ export class ObjectMetadataService extends TypeOrmQueryService [ { name: 'id', type: 'uuid', @@ -22,4 +26,30 @@ export const customTableDefaultColumns: TableColumnOptions[] = [ type: 'timestamptz', isNullable: true, }, + { + name: 'position', + type: 'float', + isNullable: true, + }, + { + name: 'name', + type: 'text', + isNullable: false, + default: "'Untitled'", + }, + { + name: 'createdBySource', + type: 'enum', + enumName: `${tableName}_createdBySource_enum`, + enum: Object.values(FieldActorSource), + isNullable: false, + default: `'${FieldActorSource.MANUAL}'`, + }, + { name: 'createdByWorkspaceMemberId', type: 'uuid', isNullable: true }, + { + name: 'createdByName', + type: 'text', + isNullable: false, + default: "''", + }, ]; diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-runner/workspace-migration-runner.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-runner/workspace-migration-runner.service.ts index 00727eaba..e09a41d3a 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-runner/workspace-migration-runner.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-runner/workspace-migration-runner.service.ts @@ -227,7 +227,7 @@ export class WorkspaceMigrationRunnerService { new Table({ name: tableName, schema: schemaName, - columns: customTableDefaultColumns, + columns: customTableDefaultColumns(tableName), }), true, );