Skip to content

Commit

Permalink
fix: (sqlite) get correct increment primary key for mutiple entities …
Browse files Browse the repository at this point in the history
…inserted

Closes: typeorm#2131
  • Loading branch information
dolsup committed Sep 4, 2020
1 parent cf3ad62 commit aede849
Show file tree
Hide file tree
Showing 3 changed files with 4 additions and 4 deletions.
2 changes: 1 addition & 1 deletion src/driver/Driver.ts
Expand Up @@ -175,7 +175,7 @@ export interface Driver {
/**
* Creates generated map of values generated or returned by database after INSERT query.
*/
createGeneratedMap(metadata: EntityMetadata, insertResult: any): ObjectLiteral|undefined;
createGeneratedMap(metadata: EntityMetadata, insertResult: any, entityIndex?: number, entityNum?: number): ObjectLiteral|undefined;

/**
* Differentiate columns of this table and columns from the given column metadatas columns
Expand Down
4 changes: 2 additions & 2 deletions src/driver/sqlite-abstract/AbstractSqliteDriver.ts
Expand Up @@ -507,11 +507,11 @@ export abstract class AbstractSqliteDriver implements Driver {
/**
* Creates generated map of values generated or returned by database after INSERT query.
*/
createGeneratedMap(metadata: EntityMetadata, insertResult: any) {
createGeneratedMap(metadata: EntityMetadata, insertResult: any, entityIndex: number, entityNum: number) {
const generatedMap = metadata.generatedColumns.reduce((map, generatedColumn) => {
let value: any;
if (generatedColumn.generationStrategy === "increment" && insertResult) {
value = insertResult;
value = insertResult - entityNum + entityIndex + 1;
// } else if (generatedColumn.generationStrategy === "uuid") {
// value = insertValue[generatedColumn.databaseName];
}
Expand Down
2 changes: 1 addition & 1 deletion src/query-builder/ReturningResultsEntityUpdator.ts
Expand Up @@ -93,7 +93,7 @@ export class ReturningResultsEntityUpdator {
}
// get all values generated by a database for us
const result = Array.isArray(insertResult.raw) ? insertResult.raw[entityIndex] : insertResult.raw;
const generatedMap = this.queryRunner.connection.driver.createGeneratedMap(metadata, result) || {};
const generatedMap = this.queryRunner.connection.driver.createGeneratedMap(metadata, result, entityIndex, entities.length) || {};

// if database does not support uuid generation we need to get uuid values
// generated by orm and set them to the generatedMap
Expand Down

0 comments on commit aede849

Please sign in to comment.