fix: Support SQlite

Move 'unique' constraint to another statement (SQLite don't support set unique when addColumn)
This commit is contained in:
BoHong Li 2017-03-28 15:16:09 +08:00
parent 6f14822413
commit e26bb0503f
3 changed files with 25 additions and 7 deletions

View file

@ -3,17 +3,22 @@ module.exports = {
up: function (queryInterface, Sequelize) {
return queryInterface.addColumn('Notes', 'shortid', {
type: Sequelize.STRING,
unique: true,
defaultValue: '0000000000',
allowNull: false
}).then(function () {
return queryInterface.addIndex('Notes', ['shortid'], {
indicesType: 'UNIQUE'
})
}).then(function () {
return queryInterface.addColumn('Notes', 'permission', {
type: Sequelize.STRING,
allowNull: false,
defaultValue: 0
defaultValue: 'private',
allowNull: false
})
}).then(function () {
return queryInterface.addColumn('Notes', 'viewcount', {
type: Sequelize.INTEGER
type: Sequelize.INTEGER,
defaultValue: 0
})
})
},
@ -23,6 +28,9 @@ module.exports = {
.then(function () {
return queryInterface.removeColumn('Notes', 'permission')
})
.then(function () {
return queryInterface.removeIndex('Notes', ['shortid'])
})
.then(function () {
return queryInterface.removeColumn('Notes', 'shortid')
})

View file

@ -3,12 +3,17 @@ module.exports = {
up: function (queryInterface, Sequelize) {
return queryInterface.changeColumn('Notes', 'title', {
type: Sequelize.TEXT
}).then(function () {
// manual added index will be removed in sqlite
return queryInterface.addIndex('Notes', ['shortid'])
})
},
down: function (queryInterface, Sequelize) {
return queryInterface.changeColumn('Notes', 'title', {
type: Sequelize.STRING
}).then(function () {
return queryInterface.addIndex('Notes', ['shortid'])
})
}
}

View file

@ -2,12 +2,17 @@
module.exports = {
up: function (queryInterface, Sequelize) {
return queryInterface.addColumn('Notes', 'alias', {
type: Sequelize.STRING,
unique: true
type: Sequelize.STRING
}).then(function () {
return queryInterface.addIndex('Notes', ['alias'], {
indicesType: 'UNIQUE'
})
})
},
down: function (queryInterface, Sequelize) {
return queryInterface.removeColumn('Notes', 'alias')
return queryInterface.removeColumn('Notes', 'alias').then(function () {
return queryInterface.removeIndex('Notes', ['alias'])
})
}
}