Skip to content

Commit a1d207f

Browse files
committed
rebase + update
1 parent 9450b20 commit a1d207f

File tree

10 files changed

+74
-114
lines changed

10 files changed

+74
-114
lines changed

packages/twenty-server/src/engine/api/common/common-query-runners/common-delete-many-query-runner.service.ts

Lines changed: 29 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import {
1515
CommonQueryNames,
1616
DeleteManyQueryArgs,
1717
} from 'src/engine/api/common/types/common-query-args.type';
18+
import { CommonSelectedFieldsResult } from 'src/engine/api/common/types/common-selected-fields-result.type';
1819
import { isWorkspaceAuthContext } from 'src/engine/api/common/utils/is-workspace-auth-context.util';
1920
import { GraphqlQueryParser } from 'src/engine/api/graphql/graphql-query-runner/graphql-query-parsers/graphql-query.parser';
2021
import { buildColumnsToReturn } from 'src/engine/api/graphql/graphql-query-runner/utils/build-columns-to-return';
@@ -24,6 +25,7 @@ import { assertMutationNotOnRemoteObject } from 'src/engine/metadata-modules/obj
2425
import { ObjectMetadataItemWithFieldMaps } from 'src/engine/metadata-modules/types/object-metadata-item-with-field-maps';
2526
import { ObjectMetadataMaps } from 'src/engine/metadata-modules/types/object-metadata-maps';
2627
import { WorkspaceDataSource } from 'src/engine/twenty-orm/datasource/workspace.datasource';
28+
import { RolePermissionConfig } from 'src/engine/twenty-orm/types/role-permission-config';
2729
import { computeTableName } from 'src/engine/utils/compute-table-name.util';
2830

2931
@Injectable()
@@ -48,15 +50,22 @@ export class CommonDeleteManyQueryRunnerService extends CommonBaseQueryRunnerSer
4850
);
4951
}
5052

51-
const {
52-
workspaceDataSource,
53-
repository,
54-
roleId,
55-
shouldBypassPermissionChecks,
56-
} = await this.prepareQueryRunnerContext({
57-
authContext,
53+
const { workspaceDataSource, repository, rolePermissionConfig } =
54+
await this.prepareQueryRunnerContext({
55+
authContext,
56+
objectMetadataItemWithFieldMaps,
57+
});
58+
59+
const commonQueryParser = new GraphqlQueryParser(
5860
objectMetadataItemWithFieldMaps,
59-
});
61+
objectMetadataMaps,
62+
);
63+
64+
const selectedFieldsResult = commonQueryParser.parseSelectedFields(
65+
objectMetadataItemWithFieldMaps,
66+
args.selectedFields,
67+
objectMetadataMaps,
68+
);
6069

6170
const processedArgs = await this.processQueryArgs({
6271
authContext,
@@ -73,20 +82,15 @@ export class CommonDeleteManyQueryRunnerService extends CommonBaseQueryRunnerSer
7382
objectMetadataItemWithFieldMaps.isCustom,
7483
);
7584

76-
const commonQueryParser = new GraphqlQueryParser(
77-
objectMetadataItemWithFieldMaps,
78-
objectMetadataMaps,
79-
);
80-
8185
commonQueryParser.applyFilterToBuilder(
8286
queryBuilder,
8387
tableName,
8488
processedArgs.filter,
8589
);
8690

8791
const columnsToReturn = buildColumnsToReturn({
88-
select: processedArgs.selectedFieldsResult.select,
89-
relations: processedArgs.selectedFieldsResult.relations,
92+
select: selectedFieldsResult.select,
93+
relations: selectedFieldsResult.relations,
9094
objectMetadataItemWithFieldMaps,
9195
objectMetadataMaps,
9296
});
@@ -99,14 +103,13 @@ export class CommonDeleteManyQueryRunnerService extends CommonBaseQueryRunnerSer
99103
const deletedRecords = deletedObjectRecords.generatedMaps as ObjectRecord[];
100104

101105
await this.processNestedRelationsIfNeeded({
102-
args: processedArgs,
103106
records: deletedRecords,
104107
objectMetadataItemWithFieldMaps,
105108
objectMetadataMaps,
106-
roleId,
109+
rolePermissionConfig,
107110
authContext,
108111
workspaceDataSource,
109-
shouldBypassPermissionChecks,
112+
selectedFieldsResult,
110113
});
111114

112115
const enrichedRecords = await this.enrichResultsWithGettersAndHooks({
@@ -121,25 +124,23 @@ export class CommonDeleteManyQueryRunnerService extends CommonBaseQueryRunnerSer
121124
}
122125

123126
private async processNestedRelationsIfNeeded({
124-
args,
125127
records,
126128
objectMetadataItemWithFieldMaps,
127129
objectMetadataMaps,
128-
roleId,
130+
rolePermissionConfig,
129131
authContext,
130132
workspaceDataSource,
131-
shouldBypassPermissionChecks,
133+
selectedFieldsResult,
132134
}: {
133-
args: DeleteManyQueryArgs;
134135
records: ObjectRecord[];
135136
objectMetadataItemWithFieldMaps: ObjectMetadataItemWithFieldMaps;
136137
objectMetadataMaps: ObjectMetadataMaps;
137-
roleId?: string;
138+
rolePermissionConfig?: RolePermissionConfig;
138139
authContext: AuthContext;
139140
workspaceDataSource: WorkspaceDataSource;
140-
shouldBypassPermissionChecks: boolean;
141+
selectedFieldsResult: CommonSelectedFieldsResult;
141142
}): Promise<void> {
142-
if (!args.selectedFieldsResult.relations) {
143+
if (!selectedFieldsResult.relations) {
143144
return;
144145
}
145146

@@ -148,16 +149,15 @@ export class CommonDeleteManyQueryRunnerService extends CommonBaseQueryRunnerSer
148149
parentObjectMetadataItem: objectMetadataItemWithFieldMaps,
149150
parentObjectRecords: records,
150151
//TODO : Refacto-common - Typing to fix when switching processNestedRelationsHelper to Common
151-
relations: args.selectedFieldsResult.relations as Record<
152+
relations: selectedFieldsResult.relations as Record<
152153
string,
153154
FindOptionsRelations<ObjectLiteral>
154155
>,
155156
limit: QUERY_MAX_RECORDS,
156157
authContext,
157158
workspaceDataSource,
158-
roleId,
159-
shouldBypassPermissionChecks,
160-
selectedFields: args.selectedFieldsResult.select,
159+
rolePermissionConfig,
160+
selectedFields: selectedFieldsResult.select,
161161
});
162162
}
163163

packages/twenty-server/src/engine/api/common/common-query-runners/common-destroy-many-query-runner.service.ts

Lines changed: 29 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,15 @@ import {
1515
CommonQueryNames,
1616
DestroyManyQueryArgs,
1717
} from 'src/engine/api/common/types/common-query-args.type';
18+
import { CommonSelectedFieldsResult } from 'src/engine/api/common/types/common-selected-fields-result.type';
1819
import { isWorkspaceAuthContext } from 'src/engine/api/common/utils/is-workspace-auth-context.util';
1920
import { GraphqlQueryParser } from 'src/engine/api/graphql/graphql-query-runner/graphql-query-parsers/graphql-query.parser';
2021
import { buildColumnsToReturn } from 'src/engine/api/graphql/graphql-query-runner/utils/build-columns-to-return';
2122
import { AuthContext } from 'src/engine/core-modules/auth/types/auth-context.type';
2223
import { ObjectMetadataItemWithFieldMaps } from 'src/engine/metadata-modules/types/object-metadata-item-with-field-maps';
2324
import { ObjectMetadataMaps } from 'src/engine/metadata-modules/types/object-metadata-maps';
2425
import { WorkspaceDataSource } from 'src/engine/twenty-orm/datasource/workspace.datasource';
26+
import { RolePermissionConfig } from 'src/engine/twenty-orm/types/role-permission-config';
2527

2628
@Injectable()
2729
export class CommonDestroyManyQueryRunnerService extends CommonBaseQueryRunnerService {
@@ -45,15 +47,22 @@ export class CommonDestroyManyQueryRunnerService extends CommonBaseQueryRunnerSe
4547
);
4648
}
4749

48-
const {
49-
workspaceDataSource,
50-
repository,
51-
roleId,
52-
shouldBypassPermissionChecks,
53-
} = await this.prepareQueryRunnerContext({
54-
authContext,
50+
const { workspaceDataSource, repository, rolePermissionConfig } =
51+
await this.prepareQueryRunnerContext({
52+
authContext,
53+
objectMetadataItemWithFieldMaps,
54+
});
55+
56+
const commonQueryParser = new GraphqlQueryParser(
5557
objectMetadataItemWithFieldMaps,
56-
});
58+
objectMetadataMaps,
59+
);
60+
61+
const selectedFieldsResult = commonQueryParser.parseSelectedFields(
62+
objectMetadataItemWithFieldMaps,
63+
args.selectedFields,
64+
objectMetadataMaps,
65+
);
5766

5867
const processedArgs = await this.processQueryArgs({
5968
authContext,
@@ -65,20 +74,15 @@ export class CommonDestroyManyQueryRunnerService extends CommonBaseQueryRunnerSe
6574
objectMetadataItemWithFieldMaps.nameSingular,
6675
);
6776

68-
const commonQueryParser = new GraphqlQueryParser(
69-
objectMetadataItemWithFieldMaps,
70-
objectMetadataMaps,
71-
);
72-
7377
commonQueryParser.applyFilterToBuilder(
7478
queryBuilder,
7579
objectMetadataItemWithFieldMaps.nameSingular,
7680
processedArgs.filter,
7781
);
7882

7983
const columnsToReturn = buildColumnsToReturn({
80-
select: processedArgs.selectedFieldsResult.select,
81-
relations: processedArgs.selectedFieldsResult.relations,
84+
select: selectedFieldsResult.select,
85+
relations: selectedFieldsResult.relations,
8286
objectMetadataItemWithFieldMaps,
8387
objectMetadataMaps,
8488
});
@@ -91,14 +95,13 @@ export class CommonDestroyManyQueryRunnerService extends CommonBaseQueryRunnerSe
9195
const deletedRecords = deletedObjectRecords.generatedMaps as ObjectRecord[];
9296

9397
await this.processNestedRelationsIfNeeded({
94-
args: processedArgs,
9598
records: deletedRecords,
9699
objectMetadataItemWithFieldMaps,
97100
objectMetadataMaps,
98-
roleId,
101+
rolePermissionConfig,
99102
authContext,
100103
workspaceDataSource,
101-
shouldBypassPermissionChecks,
104+
selectedFieldsResult,
102105
});
103106

104107
const enrichedRecords = await this.enrichResultsWithGettersAndHooks({
@@ -113,25 +116,23 @@ export class CommonDestroyManyQueryRunnerService extends CommonBaseQueryRunnerSe
113116
}
114117

115118
private async processNestedRelationsIfNeeded({
116-
args,
117119
records,
118120
objectMetadataItemWithFieldMaps,
119121
objectMetadataMaps,
120-
roleId,
122+
rolePermissionConfig,
121123
authContext,
122124
workspaceDataSource,
123-
shouldBypassPermissionChecks,
125+
selectedFieldsResult,
124126
}: {
125-
args: DestroyManyQueryArgs;
126127
records: ObjectRecord[];
127128
objectMetadataItemWithFieldMaps: ObjectMetadataItemWithFieldMaps;
128129
objectMetadataMaps: ObjectMetadataMaps;
129-
roleId?: string;
130130
authContext: AuthContext;
131+
rolePermissionConfig?: RolePermissionConfig;
131132
workspaceDataSource: WorkspaceDataSource;
132-
shouldBypassPermissionChecks: boolean;
133+
selectedFieldsResult: CommonSelectedFieldsResult;
133134
}): Promise<void> {
134-
if (!args.selectedFieldsResult.relations) {
135+
if (!selectedFieldsResult.relations) {
135136
return;
136137
}
137138

@@ -140,16 +141,15 @@ export class CommonDestroyManyQueryRunnerService extends CommonBaseQueryRunnerSe
140141
parentObjectMetadataItem: objectMetadataItemWithFieldMaps,
141142
parentObjectRecords: records,
142143
//TODO : Refacto-common - Typing to fix when switching processNestedRelationsHelper to Common
143-
relations: args.selectedFieldsResult.relations as Record<
144+
relations: selectedFieldsResult.relations as Record<
144145
string,
145146
FindOptionsRelations<ObjectLiteral>
146147
>,
147148
limit: QUERY_MAX_RECORDS,
148149
authContext,
149150
workspaceDataSource,
150-
roleId,
151-
shouldBypassPermissionChecks,
152-
selectedFields: args.selectedFieldsResult.select,
151+
rolePermissionConfig,
152+
selectedFields: selectedFieldsResult.select,
153153
});
154154
}
155155

packages/twenty-server/src/engine/api/graphql/workspace-resolver-builder/factories/delete-many-resolver.factory.ts

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ import {
1212
import { type WorkspaceSchemaBuilderContext } from 'src/engine/api/graphql/workspace-schema-builder/interfaces/workspace-schema-builder-context.interface';
1313

1414
import { CommonDeleteManyQueryRunnerService } from 'src/engine/api/common/common-query-runners/common-delete-many-query-runner.service';
15-
import { GraphqlQueryParser } from 'src/engine/api/graphql/graphql-query-runner/graphql-query-parsers/graphql-query.parser';
1615
import { ObjectRecordsToGraphqlConnectionHelper } from 'src/engine/api/graphql/graphql-query-runner/helpers/object-records-to-graphql-connection.helper';
1716
import { GraphqlQueryDeleteManyResolverService } from 'src/engine/api/graphql/graphql-query-runner/resolvers/graphql-query-delete-many-resolver.service';
1817
import { workspaceQueryRunnerGraphqlApiExceptionHandler } from 'src/engine/api/graphql/workspace-query-runner/utils/workspace-query-runner-graphql-api-exception-handler.util';
@@ -46,20 +45,11 @@ export class DeleteManyResolverFactory
4645
const featureFlagsMap = workspaceDataSource.featureFlagMap;
4746

4847
if (featureFlagsMap[FeatureFlagKey.IS_COMMON_API_ENABLED]) {
49-
const graphqlQueryParser = new GraphqlQueryParser(
50-
internalContext.objectMetadataItemWithFieldMaps,
51-
internalContext.objectMetadataMaps,
52-
);
53-
54-
const selectedFieldsResult = graphqlQueryParser.parseSelectedFields(
55-
internalContext.objectMetadataItemWithFieldMaps,
56-
graphqlFields(info),
57-
internalContext.objectMetadataMaps,
58-
);
48+
const selectedFields = graphqlFields(info);
5949

6050
try {
6151
const records = await this.commonDeleteManyQueryRunnerService.run({
62-
args: { ...args, selectedFieldsResult },
52+
args: { ...args, selectedFields },
6353
authContext: internalContext.authContext,
6454
objectMetadataMaps: internalContext.objectMetadataMaps,
6555
objectMetadataItemWithFieldMaps:

packages/twenty-server/src/engine/api/graphql/workspace-resolver-builder/factories/delete-one-resolver.factory.ts

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ import {
1111
import { type WorkspaceSchemaBuilderContext } from 'src/engine/api/graphql/workspace-schema-builder/interfaces/workspace-schema-builder-context.interface';
1212

1313
import { CommonDeleteOneQueryRunnerService } from 'src/engine/api/common/common-query-runners/common-delete-one-query-runner.service';
14-
import { GraphqlQueryParser } from 'src/engine/api/graphql/graphql-query-runner/graphql-query-parsers/graphql-query.parser';
1514
import { ObjectRecordsToGraphqlConnectionHelper } from 'src/engine/api/graphql/graphql-query-runner/helpers/object-records-to-graphql-connection.helper';
1615
import { GraphqlQueryDeleteOneResolverService } from 'src/engine/api/graphql/graphql-query-runner/resolvers/graphql-query-delete-one-resolver.service';
1716
import { workspaceQueryRunnerGraphqlApiExceptionHandler } from 'src/engine/api/graphql/workspace-query-runner/utils/workspace-query-runner-graphql-api-exception-handler.util';
@@ -45,20 +44,11 @@ export class DeleteOneResolverFactory
4544
const featureFlagsMap = workspaceDataSource.featureFlagMap;
4645

4746
if (featureFlagsMap[FeatureFlagKey.IS_COMMON_API_ENABLED]) {
48-
const graphqlQueryParser = new GraphqlQueryParser(
49-
internalContext.objectMetadataItemWithFieldMaps,
50-
internalContext.objectMetadataMaps,
51-
);
52-
53-
const selectedFieldsResult = graphqlQueryParser.parseSelectedFields(
54-
internalContext.objectMetadataItemWithFieldMaps,
55-
graphqlFields(info),
56-
internalContext.objectMetadataMaps,
57-
);
47+
const selectedFields = graphqlFields(info);
5848

5949
try {
6050
const record = await this.commonDeleteOneQueryRunnerService.run({
61-
args: { ...args, selectedFieldsResult },
51+
args: { ...args, selectedFields },
6252
authContext: internalContext.authContext,
6353
objectMetadataMaps: internalContext.objectMetadataMaps,
6454
objectMetadataItemWithFieldMaps:

packages/twenty-server/src/engine/api/graphql/workspace-resolver-builder/factories/destroy-many-resolver.factory.ts

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ import {
1212
import { type WorkspaceSchemaBuilderContext } from 'src/engine/api/graphql/workspace-schema-builder/interfaces/workspace-schema-builder-context.interface';
1313

1414
import { CommonDestroyManyQueryRunnerService } from 'src/engine/api/common/common-query-runners/common-destroy-many-query-runner.service';
15-
import { GraphqlQueryParser } from 'src/engine/api/graphql/graphql-query-runner/graphql-query-parsers/graphql-query.parser';
1615
import { ObjectRecordsToGraphqlConnectionHelper } from 'src/engine/api/graphql/graphql-query-runner/helpers/object-records-to-graphql-connection.helper';
1716
import { GraphqlQueryDestroyManyResolverService } from 'src/engine/api/graphql/graphql-query-runner/resolvers/graphql-query-destroy-many-resolver.service';
1817
import { workspaceQueryRunnerGraphqlApiExceptionHandler } from 'src/engine/api/graphql/workspace-query-runner/utils/workspace-query-runner-graphql-api-exception-handler.util';
@@ -46,20 +45,11 @@ export class DestroyManyResolverFactory
4645
const featureFlagsMap = workspaceDataSource.featureFlagMap;
4746

4847
if (featureFlagsMap[FeatureFlagKey.IS_COMMON_API_ENABLED]) {
49-
const graphqlQueryParser = new GraphqlQueryParser(
50-
internalContext.objectMetadataItemWithFieldMaps,
51-
internalContext.objectMetadataMaps,
52-
);
53-
54-
const selectedFieldsResult = graphqlQueryParser.parseSelectedFields(
55-
internalContext.objectMetadataItemWithFieldMaps,
56-
graphqlFields(info),
57-
internalContext.objectMetadataMaps,
58-
);
48+
const selectedFields = graphqlFields(info);
5949

6050
try {
6151
const records = await this.commonDestroyManyQueryRunnerService.run({
62-
args: { ...args, selectedFieldsResult },
52+
args: { ...args, selectedFields },
6353
authContext: internalContext.authContext,
6454
objectMetadataMaps: internalContext.objectMetadataMaps,
6555
objectMetadataItemWithFieldMaps:

packages/twenty-server/src/engine/api/graphql/workspace-resolver-builder/factories/destroy-one-resolver.factory.ts

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ import {
1111
import { type WorkspaceSchemaBuilderContext } from 'src/engine/api/graphql/workspace-schema-builder/interfaces/workspace-schema-builder-context.interface';
1212

1313
import { CommonDestroyOneQueryRunnerService } from 'src/engine/api/common/common-query-runners/common-destroy-one-query-runner.service';
14-
import { GraphqlQueryParser } from 'src/engine/api/graphql/graphql-query-runner/graphql-query-parsers/graphql-query.parser';
1514
import { ObjectRecordsToGraphqlConnectionHelper } from 'src/engine/api/graphql/graphql-query-runner/helpers/object-records-to-graphql-connection.helper';
1615
import { GraphqlQueryDestroyOneResolverService } from 'src/engine/api/graphql/graphql-query-runner/resolvers/graphql-query-destroy-one-resolver.service';
1716
import { workspaceQueryRunnerGraphqlApiExceptionHandler } from 'src/engine/api/graphql/workspace-query-runner/utils/workspace-query-runner-graphql-api-exception-handler.util';
@@ -45,20 +44,11 @@ export class DestroyOneResolverFactory
4544
const featureFlagsMap = workspaceDataSource.featureFlagMap;
4645

4746
if (featureFlagsMap[FeatureFlagKey.IS_COMMON_API_ENABLED]) {
48-
const graphqlQueryParser = new GraphqlQueryParser(
49-
internalContext.objectMetadataItemWithFieldMaps,
50-
internalContext.objectMetadataMaps,
51-
);
52-
53-
const selectedFieldsResult = graphqlQueryParser.parseSelectedFields(
54-
internalContext.objectMetadataItemWithFieldMaps,
55-
graphqlFields(info),
56-
internalContext.objectMetadataMaps,
57-
);
47+
const selectedFields = graphqlFields(info);
5848

5949
try {
6050
const record = await this.commonDestroyOneQueryRunnerService.run({
61-
args: { ...args, selectedFieldsResult },
51+
args: { ...args, selectedFields },
6252
authContext: internalContext.authContext,
6353
objectMetadataMaps: internalContext.objectMetadataMaps,
6454
objectMetadataItemWithFieldMaps:

0 commit comments

Comments
 (0)