
Untitled
By: a guest on
Jun 15th, 2012 | syntax:
JavaScript | size: 2.34 KB | hits: 21 | expires: Never
var model = require('../../model');
var QUERY_SKELETON = "select ser_stream_event.* from ser_stream_event as ser_stream_event {joins} where {wheres}";
module.exports = exports = msb;
function msb() {
}
msb.prototype.constructFromPost = function(post) {
if(Array.isArray(post)) {
var prepared = new library(post);
}
}
// global skeleton for constructing queries
var library = function() {
//store joins slugs
this.joins = [];
// store wheres slugs
this.wheres = [];
// store for final query
this.template = [];
this.skeleton = QUERY_SKELETON;
this.avaiable_params = {
lang: libLang,
subt: libSubt,
stream: libStream,
wp: libWP,
id_ser: lidIdSer
};
var i, items = post.getOwnPropertyNames();
for (var key in post)
if(post.hasOwnProperty(key) && this.avaiable_params.hasOwnProperty(key)) {
switch (key)
{
case 'lang':
if(is_int(post[key])) {
this.joins.push('
right join ser_stream_lang as ser_stream_lang
on
ser_stream_lang.id_ser = ser_stream_event.id_ser AND ser_stream_lang.id_lang ='+post[key]);
} else {
this.joins.push('
right join ser_stream_lang as ser_stream_lang
on
ser_stream_lang.id_ser = ser_stream_event.id_ser AND ser_stream_lang.id_lang in('+post[key]+')');
}
break;
case 'subt':
break;
case 'stream':
break;
case 'wp':
if(post[key] == 'on' || post[key] == 1) {
this.wheres.push('wp = 1');
}
break;
case 'id_ser':
if(is_int(post[key])) {
this.wheres.push('id_ser = '+ post[key]);
}
break;
}
}
}
}
library.prototype.exec = function() {
var joins = this.joins.join(' ');
var wheres = this.wheres.join(' AND ')
var query = this.skeleton.replace(['{joins}','{wheres}'],[joins,wheres]);
console.log(query);
}
// one or more values in query
function sing_plu(param,value)
{
var arr = value.split(',');
if(arr.length == 1) {
return "= {"+param+"}";
} else {
return "in ({"+param+"})";
}
}
function is_int(input){
return typeof(input)=='number'&&parseInt(input)==input;
}