Skip to content

Commit 05bd25b

Browse files
committed
simplify connect config type
1 parent 9f96a78 commit 05bd25b

File tree

5 files changed

+37
-36
lines changed

5 files changed

+37
-36
lines changed

packages/twenty-server/src/engine/twenty-orm/relation-nested-queries/relation-nested-queries.ts

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,10 @@ export class RelationNestedQueries {
3535
| QueryDeepPartialEntityWithNestedRelationFields<Entity>[]
3636
| QueryDeepPartialEntityWithNestedRelationFields<Entity>,
3737
target: EntityTarget<Entity>,
38-
) {
38+
): [
39+
RelationConnectQueryConfig[],
40+
RelationDisconnectQueryFieldsByEntityIndex,
41+
] {
3942
const entitiesArray = Array.isArray(entities) ? entities : [entities];
4043

4144
const {
@@ -49,10 +52,7 @@ export class RelationNestedQueries {
4952
relationConnectQueryFieldsByEntityIndex,
5053
);
5154

52-
return {
53-
disconnectConfig: relationDisconnectQueryFieldsByEntityIndex,
54-
connectConfig,
55-
};
55+
return [connectConfig, relationDisconnectQueryFieldsByEntityIndex];
5656
}
5757

5858
private prepareRelationConnect<Entity extends ObjectLiteral>(
@@ -79,19 +79,25 @@ export class RelationNestedQueries {
7979

8080
async processRelationNestedQueries<Entity extends ObjectLiteral>({
8181
entities,
82-
relationDisconnectQueryFieldsByEntityIndex,
83-
relationConnectQueryConfigs,
82+
relationNestedConfig,
8483
queryBuilder,
8584
}: {
8685
entities:
8786
| QueryDeepPartialEntityWithNestedRelationFields<Entity>[]
8887
| QueryDeepPartialEntityWithNestedRelationFields<Entity>;
89-
relationDisconnectQueryFieldsByEntityIndex: RelationDisconnectQueryFieldsByEntityIndex;
90-
relationConnectQueryConfigs: Record<string, RelationConnectQueryConfig>;
88+
relationNestedConfig: [
89+
RelationConnectQueryConfig[],
90+
RelationDisconnectQueryFieldsByEntityIndex,
91+
];
9192
queryBuilder: WorkspaceSelectQueryBuilder<Entity>;
9293
}): Promise<QueryDeepPartialEntity<Entity>[]> {
9394
const entitiesArray = Array.isArray(entities) ? entities : [entities];
9495

96+
const [
97+
relationConnectQueryConfigs,
98+
relationDisconnectQueryFieldsByEntityIndex,
99+
] = relationNestedConfig;
100+
95101
const updatedEntitiesWithDisconnect = this.processRelationDisconnect({
96102
entities: entitiesArray,
97103
relationDisconnectQueryFieldsByEntityIndex,
@@ -112,7 +118,7 @@ export class RelationNestedQueries {
112118
queryBuilder,
113119
}: {
114120
entities: QueryDeepPartialEntityWithNestedRelationFields<Entity>[];
115-
relationConnectQueryConfigs: Record<string, RelationConnectQueryConfig>;
121+
relationConnectQueryConfigs: RelationConnectQueryConfig[];
116122
queryBuilder: WorkspaceSelectQueryBuilder<Entity>;
117123
}): Promise<QueryDeepPartialEntity<Entity>[]> {
118124
if (!isDefined(relationConnectQueryConfigs)) return entities;
@@ -131,17 +137,15 @@ export class RelationNestedQueries {
131137
}
132138

133139
private async executeConnectQueries<Entity extends ObjectLiteral>(
134-
relationConnectQueryConfigs: Record<string, RelationConnectQueryConfig>,
140+
relationConnectQueryConfigs: RelationConnectQueryConfig[],
135141
queryBuilder: WorkspaceSelectQueryBuilder<Entity>,
136142
): Promise<[RelationConnectQueryConfig, Record<string, unknown>[]][]> {
137143
const AllRecordsToConnectWithConfig: [
138144
RelationConnectQueryConfig,
139145
Record<string, unknown>[],
140146
][] = [];
141147

142-
for (const connectQueryConfig of Object.values(
143-
relationConnectQueryConfigs,
144-
)) {
148+
for (const connectQueryConfig of relationConnectQueryConfigs) {
145149
const { clause, parameters } = createSqlWhereTupleInClause(
146150
connectQueryConfig.recordToConnectConditions,
147151
connectQueryConfig.targetObjectName,

packages/twenty-server/src/engine/twenty-orm/repository/workspace-insert-query-builder.ts

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,10 @@ export class WorkspaceInsertQueryBuilder<
3535
private internalContext: WorkspaceInternalContext;
3636
private authContext?: AuthContext;
3737
private relationNestedQueries: RelationNestedQueries;
38-
private connectConfig: Record<string, RelationConnectQueryConfig>;
39-
private disconnectConfig: RelationDisconnectQueryFieldsByEntityIndex;
38+
private relationNestedConfig: [
39+
RelationConnectQueryConfig[],
40+
RelationDisconnectQueryFieldsByEntityIndex,
41+
];
4042

4143
constructor(
4244
queryBuilder: InsertQueryBuilder<T>,
@@ -74,15 +76,12 @@ export class WorkspaceInsertQueryBuilder<
7476
): this {
7577
const mainAliasTarget = this.getMainAliasTarget();
7678

77-
const { disconnectConfig, connectConfig } =
79+
this.relationNestedConfig =
7880
this.relationNestedQueries.prepareNestedRelationQueries(
7981
values,
8082
mainAliasTarget,
8183
);
8284

83-
this.disconnectConfig = disconnectConfig;
84-
this.connectConfig = connectConfig;
85-
8685
const objectMetadata = getObjectMetadataFromEntityTarget(
8786
mainAliasTarget,
8887
this.internalContext,
@@ -121,8 +120,7 @@ export class WorkspaceInsertQueryBuilder<
121120
entities: this.expressionMap.valuesSet as
122121
| QueryDeepPartialEntityWithNestedRelationFields<T>
123122
| QueryDeepPartialEntityWithNestedRelationFields<T>[],
124-
relationDisconnectQueryFieldsByEntityIndex: this.disconnectConfig,
125-
relationConnectQueryConfigs: this.connectConfig,
123+
relationNestedConfig: this.relationNestedConfig,
126124
queryBuilder,
127125
});
128126

packages/twenty-server/src/engine/twenty-orm/repository/workspace-update-query-builder.ts

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,10 @@ export class WorkspaceUpdateQueryBuilder<
3535
private internalContext: WorkspaceInternalContext;
3636
private authContext?: AuthContext;
3737
private relationNestedQueries: RelationNestedQueries;
38-
private connectConfig: Record<string, RelationConnectQueryConfig>;
39-
private disconnectConfig: RelationDisconnectQueryFieldsByEntityIndex;
38+
private relationNestedConfig: [
39+
Record<string, RelationConnectQueryConfig>,
40+
RelationDisconnectQueryFieldsByEntityIndex,
41+
];
4042

4143
constructor(
4244
queryBuilder: UpdateQueryBuilder<T>,
@@ -109,8 +111,7 @@ export class WorkspaceUpdateQueryBuilder<
109111
entities: this.expressionMap.valuesSet as
110112
| QueryDeepPartialEntityWithNestedRelationFields<T>
111113
| QueryDeepPartialEntityWithNestedRelationFields<T>[],
112-
relationDisconnectQueryFieldsByEntityIndex: this.disconnectConfig,
113-
relationConnectQueryConfigs: this.connectConfig,
114+
relationNestedConfig: this.relationNestedConfig,
114115
queryBuilder: nestedRelationQueryBuilder,
115116
});
116117

@@ -174,15 +175,13 @@ export class WorkspaceUpdateQueryBuilder<
174175
const extendedValues = _values as
175176
| QueryDeepPartialEntityWithNestedRelationFields<T>
176177
| QueryDeepPartialEntityWithNestedRelationFields<T>[];
177-
const { disconnectConfig, connectConfig } =
178+
179+
this.relationNestedConfig =
178180
this.relationNestedQueries.prepareNestedRelationQueries(
179181
extendedValues,
180182
mainAliasTarget,
181183
);
182184

183-
this.disconnectConfig = disconnectConfig;
184-
this.connectConfig = connectConfig;
185-
186185
const formattedUpdateSet = formatData(_values, objectMetadata);
187186

188187
return super.set(formattedUpdateSet as QueryDeepPartialEntity<T>);

packages/twenty-server/src/engine/twenty-orm/utils/__tests__/compute-relation-connect-query-configs.util.spec.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,7 @@ describe('computeRelationConnectQueryConfigs', () => {
163163
{},
164164
);
165165

166-
expect(result).toEqual({});
166+
expect(result).toEqual([]);
167167
});
168168

169169
it('should throw an error if a connect field is not a relation field', () => {
@@ -378,8 +378,8 @@ describe('computeRelationConnectQueryConfigs', () => {
378378
relationConnectQueryFieldsByEntityIndex,
379379
);
380380

381-
expect(result).toEqual({
382-
'company-related-to-1': {
381+
expect(result).toEqual([
382+
{
383383
connectFieldName: 'company-related-to-1',
384384
recordToConnectConditions: [
385385
[['domainNamePrimaryLinkUrl', 'company.com']],
@@ -400,7 +400,7 @@ describe('computeRelationConnectQueryConfigs', () => {
400400
},
401401
],
402402
},
403-
'company-related-to-2': {
403+
{
404404
connectFieldName: 'company-related-to-2',
405405
recordToConnectConditions: [[['id', '1']], [['id', '2']]],
406406
recordToConnectConditionByEntityIndex: {
@@ -418,6 +418,6 @@ describe('computeRelationConnectQueryConfigs', () => {
418418
},
419419
],
420420
},
421-
});
421+
]);
422422
});
423423
});

packages/twenty-server/src/engine/twenty-orm/utils/compute-relation-connect-query-configs.util.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ export const computeRelationConnectQueryConfigs = (
7979
}
8080
}
8181

82-
return allConnectQueryConfigs;
82+
return Object.values(allConnectQueryConfigs);
8383
};
8484

8585
const updateConnectQueryConfigs = (

0 commit comments

Comments
 (0)