Guest User

Untitled

a guest
Aug 17th, 2018
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.85 KB | None | 0 0
  1. var crud = {
  2. objects: {},
  3. api: {
  4. get: function (params) {
  5.  
  6. var QUERY_STRING,
  7. QUERY_PARAMS = [],
  8. WHERE_STRING,
  9. WHERE_PIECES = [],
  10. HOW = params.how || 'and',
  11. x = 1;
  12.  
  13. QUERY_STRING = "SELECT * FROM " + params.what;
  14.  
  15. if (!!params.data && Object.keys(params.data).length > 0) {
  16.  
  17. if (!!params.how && sys.api.help.is.array(params.data)) {
  18. for (var col = 0, t = params.data.length; col < t; col++) {
  19. for (var row in params.data[col]) {
  20. if (params.data[col].hasOwnProperty(row)) {
  21.  
  22. if (null === params.data[col][row]) {
  23. WHERE_STRING = row + ' IS NULL';
  24. } else {
  25. WHERE_STRING = row;
  26. WHERE_STRING += '=';
  27. WHERE_STRING += "$" + x;
  28. QUERY_PARAMS.push(params.data[col][row]);
  29. }
  30.  
  31. WHERE_PIECES.push(WHERE_STRING);
  32.  
  33. }
  34. }
  35. x++;
  36. }
  37. } else {
  38. for (var i in params.data) {
  39. if (params.data.hasOwnProperty(i)) {
  40.  
  41. if (null === params.data[i]) {
  42. WHERE_STRING = i + ' IS NULL';
  43. } else {
  44. WHERE_STRING = i;
  45. WHERE_STRING += '=';
  46. WHERE_STRING += "$" + x;
  47. QUERY_PARAMS.push(params.data[i]);
  48.  
  49. x++;
  50. }
  51.  
  52. WHERE_PIECES.push(WHERE_STRING);
  53.  
  54. }
  55. }
  56. }
  57.  
  58. QUERY_STRING += " WHERE " + WHERE_PIECES.join(' ' + HOW + ' ');
  59.  
  60. }
  61.  
  62. if (!!params.order) {
  63. if (sys.api.help.is.array(params.order)) {
  64. var order_params = [];
  65.  
  66. for (var i = 0, t = params.order.length; i < t; i++) {
  67. var key = Object.keys(params.order[i])[0];
  68. order_params.push('"' + key + '" ' + params.order[i][key]);
  69. }
  70.  
  71. QUERY_STRING += " ORDER BY " + order_params.join(', ');
  72. } else if (Object.keys(params.order).length > 0) {
  73. var order_params = [];
  74.  
  75. for (var i in params.order) {
  76. if (params.order.hasOwnProperty(i)) {
  77. order_params.push('"' + i + '" ' + params.order[i]);
  78. }
  79. }
  80.  
  81. QUERY_STRING += " ORDER BY " + order_params.join(', ');
  82. }
  83. }
  84.  
  85. if (!!params.limit && params.limit.length > 0) {
  86. QUERY_STRING += " LIMIT " + params.limit[1] + ' OFFSET ' + params.limit[0];
  87. }
  88.  
  89. return {string: QUERY_STRING, params: QUERY_PARAMS, hash: params.hash};
  90.  
  91. },
  92. add: function (params) {
  93.  
  94. var QUERY_STRING,
  95. QUERY_PARAMS = [],
  96. ADD_PIECES_COLUMNS = [],
  97. ADD_PIECES_VALUES = [],
  98. x = 1;
  99.  
  100. for (var i in params.data) {
  101. if (params.data.hasOwnProperty(i)) {
  102. ADD_PIECES_COLUMNS.push(i);
  103. ADD_PIECES_VALUES.push('$' + x);
  104. QUERY_PARAMS.push(params.data[i]);
  105. x++;
  106. }
  107. }
  108.  
  109. QUERY_STRING = "INSERT INTO " + params.what + " (" + ADD_PIECES_COLUMNS.join(', ') + ") VALUES(" + ADD_PIECES_VALUES.join(", ") + ") RETURNING *";
  110.  
  111. return {string: QUERY_STRING, params: QUERY_PARAMS};
  112. },
  113. set: function (params) {
  114.  
  115. var QUERY_STRING,
  116. QUERY_PARAMS = [],
  117. WHERE_STRING = '',
  118. WHERE_PIECES = [],
  119. SET_STRING = '',
  120. SET_PIECES = [],
  121. x = 1;
  122.  
  123. QUERY_STRING = "UPDATE " + params.what;
  124.  
  125. for (var i in params.data) {
  126. if (params.data.hasOwnProperty(i)) {
  127. QUERY_PARAMS.push(params.data[i]);
  128.  
  129. SET_STRING = i;
  130. SET_STRING += '=';
  131. SET_STRING += "$" + x;
  132. SET_PIECES.push(SET_STRING);
  133.  
  134. if (/^\d+$/.test(params.data[i])) {
  135. params.data[i] = parseInt(params.data[i]);
  136. }
  137. x++;
  138. }
  139. }
  140.  
  141. QUERY_STRING += " SET " + SET_PIECES.join(', ');
  142.  
  143. for (var i in params.where) {
  144. if (params.where.hasOwnProperty(i)) {
  145. QUERY_PARAMS.push(params.where[i]);
  146.  
  147. WHERE_STRING = i;
  148. WHERE_STRING += '=';
  149. WHERE_STRING += "$" + x;
  150. WHERE_PIECES.push(WHERE_STRING);
  151.  
  152. if (/^\d+$/.test(params.where[i])) {
  153. params.where[i] = parseInt(params.where[i]);
  154. }
  155. x++;
  156. }
  157. }
  158.  
  159.  
  160. QUERY_STRING += " WHERE " + WHERE_PIECES.join(', ');
  161.  
  162. if (!!params.order) {
  163. if (sys.api.help.is.array(params.order)) {
  164. var order_params = [];
  165.  
  166. for (var i = 0, t = params.order.length; i < t; i++) {
  167. var key = Object.keys(params.order[i])[0];
  168. order_params.push(key + ' ' + params.order[i][key]);
  169. }
  170.  
  171. QUERY_STRING += " ORDER BY " + order_params.join(', ');
  172. } else if (Object.keys(params.order).length > 0) {
  173. var order_params = [];
  174.  
  175. for (var i in params.order) {
  176. if (params.order.hasOwnProperty(i)) {
  177. order_params.push(i + ' ' + params.order[i]);
  178. }
  179. }
  180.  
  181. QUERY_STRING += " ORDER BY " + order_params.join(', ');
  182. }
  183. }
  184.  
  185.  
  186. if (!!params.limit && params.limit.length > 0) {
  187. QUERY_STRING += " LIMIT " + params.limit[1] + ' OFFSET ' + params.limit[0];
  188. }
  189.  
  190. QUERY_STRING += " RETURNING * ";
  191.  
  192. return {string: QUERY_STRING, params: QUERY_PARAMS};
  193. },
  194. rem: function (params) {
  195.  
  196. var QUERY_STRING,
  197. QUERY_PARAMS = [],
  198. REM_STRING = '',
  199. REM_PIECES = [],
  200. x = 0;
  201.  
  202. for (var i in params.data) {
  203.  
  204. if (params.data.hasOwnProperty(i)) {
  205.  
  206. QUERY_PARAMS.push(params.data[i]);
  207.  
  208. x++;
  209.  
  210. REM_STRING = i;
  211. REM_STRING += '=';
  212. REM_STRING += "$" + x + "";
  213. REM_PIECES.push(REM_STRING);
  214.  
  215. if (/^\d+$/.test(params.data[i])) {
  216. params.data[i] = parseInt(params.data[i]);
  217. }
  218.  
  219. }
  220.  
  221. }
  222.  
  223. QUERY_STRING = "DELETE FROM " + params.what + " WHERE " + REM_PIECES.join(' AND ');
  224.  
  225. return {string: QUERY_STRING, params: QUERY_PARAMS};
  226. },
  227. new: function (params) {
  228. var QUERY_STRING = 'TRUNCATE TABLE ' + params.what + '; ALTER SEQUENCE ' + params.what + '_id_seq RESTART WITH 1';
  229.  
  230. return {string: QUERY_STRING, params: []};
  231. },
  232. query: function (params) {
  233. return {string: params.data, params: []};
  234. }
  235. }
  236. };
  237.  
  238. module.exports = crud;
Add Comment
Please, Sign In to add comment