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

Commit 878841b0 by Mick Hansen

Merge pull request #3934 from ns3777k/fix/postgres-enum-transactions

pass transaction dealing with pg enums
2 parents 4f0674b5 76a5f959
Showing with 12 additions and 4 deletions
...@@ -119,7 +119,9 @@ QueryInterface.prototype.createTable = function(tableName, attributes, options) ...@@ -119,7 +119,9 @@ QueryInterface.prototype.createTable = function(tableName, attributes, options)
for (i = 0; i < keyLen; i++) { for (i = 0; i < keyLen; i++) {
if (attributes[keys[i]].type instanceof DataTypes.ENUM) { if (attributes[keys[i]].type instanceof DataTypes.ENUM) {
sql = self.QueryGenerator.pgListEnums(getTableName, attributes[keys[i]].field || keys[i], options); sql = self.QueryGenerator.pgListEnums(getTableName, attributes[keys[i]].field || keys[i], options);
promises.push(self.sequelize.query(sql, { plain: true, raw: true, type: QueryTypes.SELECT, logging: options.logging })); promises.push(self.sequelize.query(
sql, { plain: true, raw: true, type: QueryTypes.SELECT, logging: options.logging, transaction: options.transaction }
));
} }
} }
...@@ -135,7 +137,9 @@ QueryInterface.prototype.createTable = function(tableName, attributes, options) ...@@ -135,7 +137,9 @@ QueryInterface.prototype.createTable = function(tableName, attributes, options)
// If the enum type doesn't exist then create it // If the enum type doesn't exist then create it
if (!results[enumIdx]) { if (!results[enumIdx]) {
sql = self.QueryGenerator.pgEnum(getTableName, attributes[keys[i]].field || keys[i], attributes[keys[i]], options); sql = self.QueryGenerator.pgEnum(getTableName, attributes[keys[i]].field || keys[i], attributes[keys[i]], options);
promises.push(self.sequelize.query(sql, { raw: true, logging: options.logging })); promises.push(self.sequelize.query(
sql, { raw: true, logging: options.logging, transaction: options.transaction }
));
} else if (!!results[enumIdx] && !!instanceTable) { } else if (!!results[enumIdx] && !!instanceTable) {
var enumVals = self.QueryGenerator.fromArray(results[enumIdx].enum_value) var enumVals = self.QueryGenerator.fromArray(results[enumIdx].enum_value)
, vals = instanceTable.rawAttributes[keys[i]].values; , vals = instanceTable.rawAttributes[keys[i]].values;
...@@ -218,7 +222,8 @@ QueryInterface.prototype.dropTable = function(tableName, options) { ...@@ -218,7 +222,8 @@ QueryInterface.prototype.dropTable = function(tableName, options) {
for (i = 0; i < keyLen; i++) { for (i = 0; i < keyLen; i++) {
if (instanceTable.rawAttributes[keys[i]].type instanceof DataTypes.ENUM) { if (instanceTable.rawAttributes[keys[i]].type instanceof DataTypes.ENUM) {
promises.push(self.sequelize.query(self.QueryGenerator.pgEnumDrop(getTableName, keys[i]), {logging: options.logging, raw: true})); sql = self.QueryGenerator.pgEnumDrop(getTableName, keys[i]);
promises.push(self.sequelize.query(sql, { logging: options.logging, raw: true, transaction : options.transaction }));
} }
} }
} }
...@@ -292,7 +297,10 @@ QueryInterface.prototype.dropAllEnums = function(options) { ...@@ -292,7 +297,10 @@ QueryInterface.prototype.dropAllEnums = function(options) {
var self = this var self = this
, sql = this.QueryGenerator.pgListEnums(); , sql = this.QueryGenerator.pgListEnums();
return this.sequelize.query(sql, { plain: false, raw: true, type: QueryTypes.SELECT, logging: options.logging }).map(function(result) { return this.sequelize.query(
sql,
{ plain: false, raw: true, type: QueryTypes.SELECT, logging: options.logging, transaction: options.transaction }
).map(function(result) {
return self.sequelize.query( return self.sequelize.query(
self.QueryGenerator.pgEnumDrop(null, null, self.QueryGenerator.pgEscapeAndQuote(result.enum_name)), self.QueryGenerator.pgEnumDrop(null, null, self.QueryGenerator.pgEscapeAndQuote(result.enum_name)),
{logging: options.logging, raw: true} {logging: options.logging, raw: true}
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!