Connect/Disconnect in .save (#13444)
This commit is contained in:
+18
-10
@@ -1,11 +1,11 @@
|
||||
import { isDefined } from 'class-validator';
|
||||
import { RELATION_NESTED_QUERY_KEYWORDS } from 'twenty-shared/constants';
|
||||
import { EntityTarget, ObjectLiteral } from 'typeorm';
|
||||
import { EntityTarget, ObjectLiteral, SelectQueryBuilder } from 'typeorm';
|
||||
import { QueryDeepPartialEntity } from 'typeorm/query-builder/QueryPartialEntity';
|
||||
|
||||
import { WorkspaceInternalContext } from 'src/engine/twenty-orm/interfaces/workspace-internal-context.interface';
|
||||
|
||||
import { QueryDeepPartialEntityWithNestedRelationFields } from 'src/engine/twenty-orm/entity-manager/types/query-deep-partial-entity-with-relation-connect.type';
|
||||
import { QueryDeepPartialEntityWithNestedRelationFields } from 'src/engine/twenty-orm/entity-manager/types/query-deep-partial-entity-with-nested-relation-fields.type';
|
||||
import { RelationConnectQueryConfig } from 'src/engine/twenty-orm/entity-manager/types/relation-connect-query-config.type';
|
||||
import {
|
||||
RelationConnectQueryFieldsByEntityIndex,
|
||||
@@ -36,10 +36,9 @@ export class RelationNestedQueries {
|
||||
| QueryDeepPartialEntityWithNestedRelationFields<Entity>[]
|
||||
| QueryDeepPartialEntityWithNestedRelationFields<Entity>,
|
||||
target: EntityTarget<Entity>,
|
||||
): [
|
||||
RelationConnectQueryConfig[],
|
||||
RelationDisconnectQueryFieldsByEntityIndex,
|
||||
] {
|
||||
):
|
||||
| [RelationConnectQueryConfig[], RelationDisconnectQueryFieldsByEntityIndex]
|
||||
| null {
|
||||
const entitiesArray = Array.isArray(entities) ? entities : [entities];
|
||||
|
||||
const {
|
||||
@@ -53,7 +52,10 @@ export class RelationNestedQueries {
|
||||
relationConnectQueryFieldsByEntityIndex,
|
||||
);
|
||||
|
||||
return [connectConfig, relationDisconnectQueryFieldsByEntityIndex];
|
||||
return connectConfig.length > 0 ||
|
||||
Object.keys(relationDisconnectQueryFieldsByEntityIndex).length > 0
|
||||
? [connectConfig, relationDisconnectQueryFieldsByEntityIndex]
|
||||
: null;
|
||||
}
|
||||
|
||||
private prepareRelationConnect<Entity extends ObjectLiteral>(
|
||||
@@ -90,7 +92,9 @@ export class RelationNestedQueries {
|
||||
RelationConnectQueryConfig[],
|
||||
RelationDisconnectQueryFieldsByEntityIndex,
|
||||
];
|
||||
queryBuilder: WorkspaceSelectQueryBuilder<Entity>;
|
||||
queryBuilder:
|
||||
| WorkspaceSelectQueryBuilder<Entity>
|
||||
| SelectQueryBuilder<Entity>;
|
||||
}): Promise<QueryDeepPartialEntity<Entity>[]> {
|
||||
const entitiesArray = Array.isArray(entities) ? entities : [entities];
|
||||
|
||||
@@ -120,7 +124,9 @@ export class RelationNestedQueries {
|
||||
}: {
|
||||
entities: QueryDeepPartialEntityWithNestedRelationFields<Entity>[];
|
||||
relationConnectQueryConfigs: RelationConnectQueryConfig[];
|
||||
queryBuilder: WorkspaceSelectQueryBuilder<Entity>;
|
||||
queryBuilder:
|
||||
| WorkspaceSelectQueryBuilder<Entity>
|
||||
| SelectQueryBuilder<Entity>;
|
||||
}): Promise<QueryDeepPartialEntity<Entity>[]> {
|
||||
if (relationConnectQueryConfigs.length === 0) return entities;
|
||||
|
||||
@@ -139,7 +145,9 @@ export class RelationNestedQueries {
|
||||
|
||||
private async executeConnectQueries<Entity extends ObjectLiteral>(
|
||||
relationConnectQueryConfigs: RelationConnectQueryConfig[],
|
||||
queryBuilder: WorkspaceSelectQueryBuilder<Entity>,
|
||||
queryBuilder:
|
||||
| WorkspaceSelectQueryBuilder<Entity>
|
||||
| SelectQueryBuilder<Entity>,
|
||||
): Promise<[RelationConnectQueryConfig, Record<string, unknown>[]][]> {
|
||||
const allRecordsToConnectWithConfig: [
|
||||
RelationConnectQueryConfig,
|
||||
|
||||
Reference in New Issue
Block a user