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

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() { ...@@ -121,7 +121,7 @@ module.exports = (function() {
for (var attrName in this.daoFactory.rawAttributes) { for (var attrName in this.daoFactory.rawAttributes) {
if (this.daoFactory.rawAttributes.hasOwnProperty(attrName)) { if (this.daoFactory.rawAttributes.hasOwnProperty(attrName)) {
var definition = this.daoFactory.rawAttributes[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') , hasValue = (typeof values[attrName] !== 'undefined')
, valueOutOfScope = ((definition.values || []).indexOf(values[attrName]) === -1) , valueOutOfScope = ((definition.values || []).indexOf(values[attrName]) === -1)
......
...@@ -7,13 +7,30 @@ module.exports = { ...@@ -7,13 +7,30 @@ module.exports = {
BOOLEAN: 'TINYINT(1)', BOOLEAN: 'TINYINT(1)',
FLOAT: 'FLOAT', FLOAT: 'FLOAT',
NOW: 'NOW', 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() { get DECIMAL() {
var ret = function(precision, scale) { var result = function(precision, scale) {
return 'DECIMAL(' + precision + ',' + scale + ')'; return 'DECIMAL(' + precision + ',' + scale + ')'
}; }
ret.toString = ret.valueOf = function() { return 'DECIMAL'; };
return ret; result.toString = result.valueOf = function() { return 'DECIMAL' }
return result
}, },
ARRAY: function(type) { return type + '[]' } ARRAY: function(type) { return type + '[]' }
} }
...@@ -378,7 +378,7 @@ module.exports = (function() { ...@@ -378,7 +378,7 @@ module.exports = (function() {
var template = "<%= type %>" var template = "<%= type %>"
, replacements = { type: dataType.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)) { if (Array.isArray(dataType.values) && (dataType.values.length > 0)) {
replacements.type = "ENUM(" + Utils._.map(dataType.values, function(value) { replacements.type = "ENUM(" + Utils._.map(dataType.values, function(value) {
return Utils.escape(value) return Utils.escape(value)
......
...@@ -518,7 +518,7 @@ module.exports = (function() { ...@@ -518,7 +518,7 @@ module.exports = (function() {
var template = "<%= type %>" var template = "<%= type %>"
, replacements = { type: dataType.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)) { if (Array.isArray(dataType.values) && (dataType.values.length > 0)) {
replacements.type = "ENUM(" + Utils._.map(dataType.values, function(value) { replacements.type = "ENUM(" + Utils._.map(dataType.values, function(value) {
return Utils.escape(value) return Utils.escape(value)
......
...@@ -151,7 +151,7 @@ module.exports = (function() { ...@@ -151,7 +151,7 @@ module.exports = (function() {
var template = "<%= type %>" var template = "<%= type %>"
, replacements = { type: dataType.type } , replacements = { type: dataType.type }
if (dataType.type === DataTypes.ENUM) { if (dataType.type.toString() === DataTypes.ENUM.toString()) {
replacements.type = "TEXT" replacements.type = "TEXT"
if (!(Array.isArray(dataType.values) && (dataType.values.length > 0))) { if (!(Array.isArray(dataType.values) && (dataType.values.length > 0))) {
......
...@@ -153,12 +153,13 @@ describe(Helpers.getTestDialectTeaser("Sequelize"), function() { ...@@ -153,12 +153,13 @@ describe(Helpers.getTestDialectTeaser("Sequelize"), function() {
}) })
describe('define', function() { describe('define', function() {
[
{ type: Helpers.Sequelize.ENUM, values: ['scheduled', 'active', 'finished']},
Helpers.Sequelize.ENUM('scheduled', 'active', 'finished')
].forEach(function(status) {
describe('enum', function() { describe('enum', function() {
before(function(done) { before(function(done) {
this.Review = this.sequelize.define('review', { this.Review = this.sequelize.define('review', { status: status })
status: { type: Helpers.Sequelize.ENUM, values: ['scheduled', 'active', 'finished']}
})
this.Review.sync({ force: true }).success(done) this.Review.sync({ force: true }).success(done)
}) })
...@@ -193,4 +194,5 @@ describe(Helpers.getTestDialectTeaser("Sequelize"), function() { ...@@ -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!