Fix upsert in ORM (#13589)
Before: <img width="1496" height="850" alt="image" src="https://github.com/user-attachments/assets/bb334c4d-99c3-4237-90e3-02400ab566f5" /> After: <img width="1496" height="850" alt="image" src="https://github.com/user-attachments/assets/4e53bdf0-6f2c-4a11-9836-d83f44291a0b" /> Query: ``` mutation CreatePerson($upsert: Boolean, $data: PersonCreateInput) { createPerson(upsert: $upsert, data: $data) { jobTitle id } } ``` Variables: ``` { "upsert": true, "data": { "name": { "firstName": "marie"} } } ```
This commit is contained in:
+3
-3
@@ -190,8 +190,8 @@ export class WorkspaceEntityManager extends EntityManager {
|
||||
override upsert<Entity extends ObjectLiteral>(
|
||||
target: EntityTarget<Entity>,
|
||||
entityOrEntities:
|
||||
| QueryDeepPartialEntity<Entity>
|
||||
| QueryDeepPartialEntity<Entity>[],
|
||||
| QueryDeepPartialEntityWithNestedRelationFields<Entity>
|
||||
| QueryDeepPartialEntityWithNestedRelationFields<Entity>[],
|
||||
conflictPathsOrOptions: string[] | UpsertOptions<Entity>,
|
||||
permissionOptions?: {
|
||||
shouldBypassPermissionChecks?: boolean;
|
||||
@@ -209,7 +209,7 @@ export class WorkspaceEntityManager extends EntityManager {
|
||||
} else {
|
||||
options = conflictPathsOrOptions;
|
||||
}
|
||||
let entities: QueryDeepPartialEntity<Entity>[];
|
||||
let entities: QueryDeepPartialEntityWithNestedRelationFields<Entity>[];
|
||||
|
||||
if (!Array.isArray(entityOrEntities)) {
|
||||
entities = [entityOrEntities];
|
||||
|
||||
+11
-9
@@ -29,6 +29,7 @@ import { WorkspaceUpdateQueryBuilder } from 'src/engine/twenty-orm/repository/wo
|
||||
import { formatData } from 'src/engine/twenty-orm/utils/format-data.util';
|
||||
import { formatResult } from 'src/engine/twenty-orm/utils/format-result.util';
|
||||
import { getObjectMetadataFromEntityTarget } from 'src/engine/twenty-orm/utils/get-object-metadata-from-entity-target.util';
|
||||
import { WorkspaceEntityManager } from 'src/engine/twenty-orm/entity-manager/workspace-entity-manager';
|
||||
|
||||
export class WorkspaceInsertQueryBuilder<
|
||||
T extends ObjectLiteral,
|
||||
@@ -137,16 +138,17 @@ export class WorkspaceInsertQueryBuilder<
|
||||
}
|
||||
|
||||
const result = await super.execute();
|
||||
const eventSelectQueryBuilder = new WorkspaceSelectQueryBuilder(
|
||||
this as unknown as WorkspaceSelectQueryBuilder<T>,
|
||||
this.objectRecordsPermissions,
|
||||
this.internalContext,
|
||||
true,
|
||||
this.authContext,
|
||||
this.featureFlagMap,
|
||||
);
|
||||
const eventSelectQueryBuilder = (
|
||||
this.connection.manager as WorkspaceEntityManager
|
||||
).createQueryBuilder(
|
||||
mainAliasTarget,
|
||||
this.expressionMap.mainAlias?.metadata.name ?? '',
|
||||
undefined,
|
||||
{
|
||||
shouldBypassPermissionChecks: true,
|
||||
},
|
||||
) as WorkspaceSelectQueryBuilder<T>;
|
||||
|
||||
eventSelectQueryBuilder.expressionMap.aliases = this.expressionMap.aliases;
|
||||
eventSelectQueryBuilder.whereInIds(
|
||||
result.identifiers.map((identifier) => identifier.id),
|
||||
);
|
||||
|
||||
@@ -622,7 +622,9 @@ export class WorkspaceRepository<
|
||||
}
|
||||
|
||||
override async upsert(
|
||||
entityOrEntities: QueryDeepPartialEntity<T> | QueryDeepPartialEntity<T>[],
|
||||
entityOrEntities:
|
||||
| QueryDeepPartialEntityWithNestedRelationFields<T>
|
||||
| QueryDeepPartialEntityWithNestedRelationFields<T>[],
|
||||
conflictPathsOrOptions: string[] | UpsertOptions<T>,
|
||||
entityManager?: WorkspaceEntityManager,
|
||||
selectedColumns: string[] = [],
|
||||
|
||||
Reference in New Issue
Block a user