miridoo-js-orm
Version:
miridoo javascript orm for database
149 lines (120 loc) • 4.15 kB
JavaScript
var DataType = function(){
this.definition = {};
var self = this;
this.null = function(isnull){
self.definition.null = isnull;
return this;
};
this.nullable = function(){
this.null(true);
return this;
};
this.notNull = function(){
this.null(false);
return this;
};
this.increment = function(){
self.definition.increment = true;
return this;
};
this.unsigned = function(){
self.definition.unsigned = true;
return this;
};
this.pk = function(){
self.definition.pk = true;
return this;
};
this.fk = function(table, column){
self.definition.fk = true;
self.definition.fkTable = table;
self.definition.fkColumn = column;
return this;
};
this.constraint = function(name){
self.definition.constraint = name;
return this;
};
this.on = function(r){
self.definition.on = r || {};
return this;
};
this.default = function(r){
self.definition.default = r || {};
return this;
};
this.get = function(){
return self.definition;
};
};
var integer = function(size){
DataType.apply(this, arguments);
this.definition.type = 'int';
this.definition.size = size || 11;
};global['integer'] = function(size){ return new integer(size); };
var inc = function(){
integer.apply(this, arguments);
this.unsigned();
this.null(false);
this.increment();
this.pk();
};global['id'] = global['inc'] = function(size){ return new inc(); };
var double = function (nb, digit) {
DataType.apply(this, arguments);
this.definition.type = 'double';
};global['double'] = function(nb, digit){ return new double(nb, digit); };
var float = function(nb, digit){
DataType.apply(this, arguments);
this.definition.type = 'float';
};global['float'] = function(nb, digit){ return new float(nb, digit); };
var varchar = function(size){
DataType.apply(this, arguments);
this.definition.type = 'string';
this.definition.size = size || 255;
this.default = function(str){
this.definition.default = '"'+str+'"';
return this;
};
};global['varchar'] = global['string'] = function(size){ return new varchar(size); };
var json = function(){
DataType.apply(this, arguments);
this.definition.type = 'text';
this.default = function(str){
this.definition.default = '"'+((typeof str == 'object')?JSON.stringify(str):str)+'"';
return this;
};
};global['json'] = global['text'] = function(size){ return new json(); };
var char = function(size){
DataType.apply(this, arguments);
this.definition.type = 'char';
this.definition.size = size || 1;
};global['char'] = function(size){ return new char(size); };
var blob = function(){
DataType.apply(this, arguments);
this.definition.type = 'blob';
this.default = function(str){
this.definition.default = '"'+str+'"';
return this;
};
};global['blob'] = function(size){ return new blob(); };
var time = function(){
DataType.apply(this, arguments);
this.definition.type = 'time';
};global['time'] = function(size){ return new time(); };
var date = function(){
DataType.apply(this, arguments);
this.definition.type = 'date';
};global['date'] = function(size){ return new date() };
var timestamp = function(){
DataType.apply(this, arguments);
this.definition.type = 'timestamp';
};global['timestanp'] = function(){ return new timestamp(); };
var datetime = function(){
DataType.apply(this, arguments);
this.definition.type = 'datetime';
}; global['datetime'] = function(size){ return new datetime();};
var Enum = function(values){
DataType.apply(this, arguments);
this.definition.type = 'enum';
this.definition.values = values;
}; global['choice'] = global['Enum'] = function(){ return new Enum(Array.from(arguments)); };