UNPKG

miridoo-js-orm

Version:
66 lines (58 loc) 1.95 kB
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; };