Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on Jun 15th, 2012  |  syntax: JavaScript  |  size: 2.34 KB  |  hits: 21  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. var model = require('../../model');
  2. var QUERY_SKELETON = "select ser_stream_event.* from ser_stream_event as ser_stream_event {joins} where {wheres}";
  3.  
  4.  
  5. module.exports = exports = msb;
  6.  
  7.  
  8.  
  9. function msb() {
  10.  
  11. }
  12.  
  13. msb.prototype.constructFromPost = function(post) {
  14.   if(Array.isArray(post)) {
  15.     var prepared = new library(post);
  16.   }
  17. }
  18.  
  19.  
  20. // global skeleton for constructing queries
  21. var library = function() {
  22.   //store joins slugs
  23.   this.joins = [];
  24.   // store wheres slugs
  25.   this.wheres = [];
  26.   // store for final query
  27.   this.template = [];
  28.  
  29.   this.skeleton = QUERY_SKELETON;
  30.  
  31.   this.avaiable_params = {
  32.     lang: libLang,
  33.     subt: libSubt,
  34.     stream: libStream,
  35.     wp: libWP,
  36.     id_ser: lidIdSer
  37.   };
  38.  
  39.  
  40.   var i, items = post.getOwnPropertyNames();
  41.   for (var key in post)
  42.     if(post.hasOwnProperty(key) && this.avaiable_params.hasOwnProperty(key)) {
  43.       switch (key)
  44.       {
  45.         case 'lang':
  46.           if(is_int(post[key])) {
  47.             this.joins.push('
  48.              right join ser_stream_lang as ser_stream_lang
  49.              on
  50.              ser_stream_lang.id_ser = ser_stream_event.id_ser AND ser_stream_lang.id_lang ='+post[key]);
  51.           } else {
  52.             this.joins.push('
  53.              right join ser_stream_lang as ser_stream_lang
  54.              on
  55.              ser_stream_lang.id_ser = ser_stream_event.id_ser AND ser_stream_lang.id_lang in('+post[key]+')');
  56.           }
  57.         break;
  58.  
  59.         case 'subt':
  60.         break;
  61.  
  62.         case 'stream':
  63.         break;
  64.  
  65.         case 'wp':
  66.           if(post[key] == 'on' || post[key] == 1) {
  67.             this.wheres.push('wp = 1');
  68.           }
  69.         break;
  70.  
  71.         case 'id_ser':
  72.           if(is_int(post[key])) {
  73.             this.wheres.push('id_ser = '+ post[key]);
  74.           }
  75.         break;
  76.       }
  77.     }
  78.   }
  79. }
  80.  
  81. library.prototype.exec = function() {
  82.   var joins = this.joins.join(' ');
  83.   var wheres = this.wheres.join(' AND ')
  84.   var query = this.skeleton.replace(['{joins}','{wheres}'],[joins,wheres]);
  85.   console.log(query);
  86. }
  87.  
  88.  
  89.  
  90. // one or more values in query
  91. function sing_plu(param,value)
  92. {
  93.   var arr = value.split(',');
  94.   if(arr.length == 1) {
  95.     return "= {"+param+"}";
  96.   } else {
  97.     return "in ({"+param+"})";
  98.   }
  99. }
  100. function is_int(input){
  101.     return typeof(input)=='number'&&parseInt(input)==input;
  102. }