不要怂,就是干,撸起袖子干!

Commit b0ae95b0 by Cao Jiannan Committed by Sushant

Fix issue for null id of AI index bulkCreate (#6475)

* fix issue for null id of AI index bulkCreate

fix issue for null id of AI index bulkCreate

* remove f

* add semicolon

* add guard

* add guard

* fix issue that isNewRecord affects map fields back to attributes

fix issue that isNewRecord affects map fields back to attributes

* fix [] pair

* add back set

* exchange set and directly set

* revert to not change set

* add space before <

* change isNewRecords location

* change instances[i]

* retest

* retest

* add test for "should return autoIncrement primary key"

* add test for "should return autoIncrement primary key"

* recover model.test

* format code

* fix sqlite AI primary key issue

* retest
1 parent 7022505d
......@@ -92,9 +92,24 @@ class Query extends AbstractQuery {
this.handleInsertQuery(data);
if (!this.instance) {
// handle bulkCreate AI primiary key
if (
data.constructor.name === 'ResultSetHeader'
&& this.model
&& this.model.autoIncrementField
&& this.model.autoIncrementField === this.model.primaryKeyAttribute
&& this.model.rawAttributes[this.model.primaryKeyAttribute]
) {
const startId = data[this.getInsertIdField()];
result = [];
for (let i = startId; i < startId + data.affectedRows; i++) {
result.push({ [this.model.rawAttributes[this.model.primaryKeyAttribute].field]: i });
}
} else {
result = data[this.getInsertIdField()];
}
}
}
if (this.isSelectQuery()) {
result = this.handleSelectQuery(data);
......
......@@ -127,9 +127,24 @@ class Query extends AbstractQuery {
query.handleInsertQuery(results, metaData);
if (!query.instance) {
// handle bulkCreate AI primiary key
if (
metaData.constructor.name === 'Statement'
&& query.model
&& query.model.autoIncrementField
&& query.model.autoIncrementField === query.model.primaryKeyAttribute
&& query.model.rawAttributes[query.model.primaryKeyAttribute]
) {
const startId = metaData[query.getInsertIdField()] - metaData.changes + 1;
result = [];
for (let i = startId; i< startId + metaData.changes; i++) {
result.push({ [query.model.rawAttributes[query.model.primaryKeyAttribute].field]: i });
}
} else {
result = metaData[query.getInsertIdField()];
}
}
}
if (query.sql.indexOf('sqlite_master') !== -1) {
result = results.map(resultSet => resultSet.name);
......
......@@ -2267,7 +2267,6 @@ class Model {
if (Array.isArray(results)) {
results.forEach((result, i) => {
instances[i].set(this.primaryKeyAttribute, result[this.rawAttributes[this.primaryKeyAttribute].field], {raw: true});
instances[i].isNewRecord = false;
});
}
return results;
......@@ -2286,6 +2285,7 @@ class Model {
delete instance.dataValues[this.rawAttributes[attr].field];
}
}
instance.isNewRecord = false;
});
// Run after hook
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!