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

Commit ecd3de33 by Sascha Depold

enum can now be defined with Sequelize.ENUM('asd1', 'asd2', 'asd3')

1 parent fa0167d9
......@@ -121,7 +121,7 @@ module.exports = (function() {
for (var attrName in this.daoFactory.rawAttributes) {
if (this.daoFactory.rawAttributes.hasOwnProperty(attrName)) {
var definition = this.daoFactory.rawAttributes[attrName]
, isEnum = (definition.type === 'ENUM')
, isEnum = (definition.type && (definition.type.toString() === DataTypes.ENUM.toString()))
, hasValue = (typeof values[attrName] !== 'undefined')
, valueOutOfScope = ((definition.values || []).indexOf(values[attrName]) === -1)
......
......@@ -7,13 +7,30 @@ module.exports = {
BOOLEAN: 'TINYINT(1)',
FLOAT: 'FLOAT',
NOW: 'NOW',
ENUM: 'ENUM',
get ENUM() {
var result = function() {
return {
type: 'ENUM',
values: Array.prototype.slice.call(arguments).reduce(function(result, element) {
return result.concat(Array.isArray(element) ? element : [ element ])
}, [])
}
}
result.toString = result.valueOf = function() { return 'ENUM' }
return result
},
get DECIMAL() {
var ret = function(precision, scale) {
return 'DECIMAL(' + precision + ',' + scale + ')';
};
ret.toString = ret.valueOf = function() { return 'DECIMAL'; };
return ret;
var result = function(precision, scale) {
return 'DECIMAL(' + precision + ',' + scale + ')'
}
result.toString = result.valueOf = function() { return 'DECIMAL' }
return result
},
ARRAY: function(type) { return type + '[]' }
}
......@@ -378,7 +378,7 @@ module.exports = (function() {
var template = "<%= type %>"
, replacements = { type: dataType.type }
if (dataType.type === DataTypes.ENUM) {
if (dataType.type.toString() === DataTypes.ENUM.toString()) {
if (Array.isArray(dataType.values) && (dataType.values.length > 0)) {
replacements.type = "ENUM(" + Utils._.map(dataType.values, function(value) {
return Utils.escape(value)
......
......@@ -518,7 +518,7 @@ module.exports = (function() {
var template = "<%= type %>"
, replacements = { type: dataType.type }
if (dataType.type === DataTypes.ENUM) {
if (dataType.type.toString() === DataTypes.ENUM.toString()) {
if (Array.isArray(dataType.values) && (dataType.values.length > 0)) {
replacements.type = "ENUM(" + Utils._.map(dataType.values, function(value) {
return Utils.escape(value)
......
......@@ -151,7 +151,7 @@ module.exports = (function() {
var template = "<%= type %>"
, replacements = { type: dataType.type }
if (dataType.type === DataTypes.ENUM) {
if (dataType.type.toString() === DataTypes.ENUM.toString()) {
replacements.type = "TEXT"
if (!(Array.isArray(dataType.values) && (dataType.values.length > 0))) {
......
......@@ -153,12 +153,13 @@ describe(Helpers.getTestDialectTeaser("Sequelize"), function() {
})
describe('define', function() {
[
{ type: Helpers.Sequelize.ENUM, values: ['scheduled', 'active', 'finished']},
Helpers.Sequelize.ENUM('scheduled', 'active', 'finished')
].forEach(function(status) {
describe('enum', function() {
before(function(done) {
this.Review = this.sequelize.define('review', {
status: { type: Helpers.Sequelize.ENUM, values: ['scheduled', 'active', 'finished']}
})
this.Review = this.sequelize.define('review', { status: status })
this.Review.sync({ force: true }).success(done)
})
......@@ -193,4 +194,5 @@ describe(Helpers.getTestDialectTeaser("Sequelize"), function() {
})
})
})
})
})
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!