miridoo-js-orm
Version:
miridoo javascript orm for database
66 lines (58 loc) • 1.95 kB
JavaScript
module.exports = function(def, colname){
def = (typeof def == 'function')?def().get() : def.get();
var definition = '';
switch(def.type){
case 'text' :
case 'json' :
definition += ' TEXT';
break;
case 'int' :
case 'integer' :
definition += ' INT';
break;
case 'string' :
case 'varchar' :
definition += ' VARCHAR('+def.size+')';
break;
case 'enum' :
definition += ' ENUM("'+def.values.join('", "')+'")';
break;
case 'date' :
definition += ' DATE';
break;
case 'timestamp' :
definition += ' DATETIME';
break;
case 'datetime' :
definition += ' DATETIME';
break;
case 'time' :
definition += ' TIME';
break;
case 'char' :
definition += ' CHAR('+def.size+')';
break;
};
if(def.pk && def.pk === true)
definition += ' PRIMARY KEY ';
if(def.null && def.null === true)
definition += ' NULL ';
else
definition += ' NOT NULL ';
if(def.increment && def.increment === true)
definition += ' AUTO_INCREMENT ';
if(def.default)
definition += ' DEFAULT '+def.default;
if(def.fk && def.fk === true){
if(def.constraint)
definition += ', CONSTRAINT `'+def.constraint+'` ';
definition += ' FOREIGN KEY('+colname+') REFERENCES '+def.fkTable+'('+def.fkColumn+')';
if(def.on){
var ons = [];
for(var i in def.on)
ons.push(' ON '+i.toUpperCase()+' '+def.on[i].toUpperCase());
definition += ons.join(' ');
}
}
return definition;
};