Skip to content

Commit 1cfbd33

Browse files
authored
fix(data-types): use proper field name for ARRAY(ENUM) (#13210)
1 parent 444f06f commit 1cfbd33

2 files changed

Lines changed: 29 additions & 1 deletion

File tree

lib/dialects/postgres/data-types.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -480,7 +480,7 @@ module.exports = BaseTypes => {
480480

481481
if (this.type instanceof BaseTypes.ENUM) {
482482
castKey = `${Utils.addTicks(
483-
Utils.generateEnumName(options.field.Model.getTableName(), options.field.fieldName),
483+
Utils.generateEnumName(options.field.Model.getTableName(), options.field.field),
484484
'"'
485485
) }[]`;
486486
}

test/integration/dialects/postgres/dao.test.js

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -437,6 +437,34 @@ if (dialect.match(/^postgres/)) {
437437
expect(user.permissions).to.deep.equal(['access', 'write']);
438438
});
439439

440+
it('should be able to insert a new record even with a redefined field name', async function() {
441+
const User = this.sequelize.define('UserEnums', {
442+
name: DataTypes.STRING,
443+
type: DataTypes.ENUM('A', 'B', 'C'),
444+
owners: DataTypes.ARRAY(DataTypes.STRING),
445+
specialPermissions: {
446+
type: DataTypes.ARRAY(DataTypes.ENUM([
447+
'access',
448+
'write',
449+
'check',
450+
'delete'
451+
])),
452+
field: 'special_permissions'
453+
}
454+
});
455+
456+
await User.sync({ force: true });
457+
458+
const user = await User.bulkCreate([{
459+
name: 'file.exe',
460+
type: 'C',
461+
owners: ['userA', 'userB'],
462+
specialPermissions: ['access', 'write']
463+
}]);
464+
465+
expect(user.length).to.equal(1);
466+
});
467+
440468
it('should fail when trying to insert foreign element on ARRAY(ENUM)', async function() {
441469
const User = this.sequelize.define('UserEnums', {
442470
name: DataTypes.STRING,

0 commit comments

Comments
 (0)