UNPKG

nodulator

Version:

Complete NodeJS Framework for Restfull APIs

374 lines (242 loc) 14.4 kB
<!DOCTYPE html> <html> <head> <title>Mysql.ls</title> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <meta name="viewport" content="width=device-width, target-densitydpi=160dpi, initial-scale=1.0; maximum-scale=1.0; user-scalable=0;"> <link rel="stylesheet" media="all" href="docco.css" /> </head> <body> <div id="container"> <div id="background"></div> <ul id="jump_to"> <li> <a class="large" href="javascript:void(0);">Jump To &hellip;</a> <a class="small" href="javascript:void(0);">+</a> <div id="jump_wrapper"> <div id="jump_page_wrapper"> <div id="jump_page"> <a class="source" href="Nodulator.html"> Nodulator.ls </a> <a class="source" href="ClientDB.html"> ClientDB.ls </a> <a class="source" href="index.html"> index.ls </a> <a class="source" href="Resource.html"> Resource.ls </a> <a class="source" href="Bus.html"> Bus.ls </a> <a class="source" href="Cache.html"> Cache.ls </a> <a class="source" href="ChangeWatcher.html"> ChangeWatcher.ls </a> <a class="source" href="Debug.html"> Debug.ls </a> <a class="source" href="Wrappers.html"> Wrappers.ls </a> <a class="source" href="Nodulator.html"> Nodulator.ls </a> <a class="source" href="Resource.html"> Resource.ls </a> <a class="source" href="Schema.html"> Schema.ls </a> <a class="source" href="NModule.html"> NModule.ls </a> <a class="source" href="AccountResource.html"> AccountResource.ls </a> <a class="source" href="User.html"> User.ls </a> <a class="source" href="index.html"> index.ls </a> <a class="source" href="Nodulator-Angular.html"> Nodulator-Angular.ls </a> <a class="source" href="TaskDirective.html"> TaskDirective.ls </a> <a class="source" href="index.html"> index.ls </a> <a class="source" href="TaskService.html"> TaskService.ls </a> <a class="source" href="main.html"> main.ls </a> <a class="source" href="index.html"> index.ls </a> <a class="source" href="index.html"> index.ls </a> <a class="source" href="Task.html"> Task.ls </a> <a class="source" href="index.html"> index.ls </a> <a class="source" href="index.html"> index.ls </a> <a class="source" href="index.html"> index.ls </a> <a class="source" href="index.html"> index.ls </a> <a class="source" href="index.html"> index.ls </a> <a class="source" href="DOM.html"> DOM.ls </a> <a class="source" href="View.html"> View.ls </a> <a class="source" href="index.html"> index.ls </a> <a class="source" href="Nodulator.html"> Nodulator.ls </a> <a class="source" href="Mongo.html"> Mongo.ls </a> <a class="source" href="Mysql.html"> Mysql.ls </a> <a class="source" href="SqlMem.html"> SqlMem.ls </a> <a class="source" href="index.html"> index.ls </a> <a class="source" href="Resource.html"> Resource.ls </a> <a class="source" href="Request.html"> Request.ls </a> <a class="source" href="Route.html"> Route.ls </a> <a class="source" href="index.html"> index.ls </a> </div> </div> </li> </ul> <ul class="sections"> <li id="title"> <div class="annotation"> <h1>Mysql.ls</h1> </div> </li> <li id="section-1"> <div class="annotation"> <div class="pilwrap "> <a class="pilcrow" href="#section-1">&#182;</a> </div> </div> <div class="content"><div class='highlight'><pre>_ = <span class="hljs-built_in">require</span> <span class="hljs-string">'underscore'</span> mysql = <span class="hljs-built_in">require</span> <span class="hljs-string">'mysql'</span> <span class="hljs-built_in">module</span>.exports = <span class="hljs-function"><span class="hljs-params">(config)</span> -&gt;</span> connection = mysql.createConnection <span class="hljs-keyword">do</span> host : config.host || <span class="hljs-string">'localhost'</span> port : config.port || <span class="hljs-number">3306</span> user : config.user || <span class="hljs-string">''</span> password : config.pass || <span class="hljs-string">''</span> database : config.database || <span class="hljs-string">''</span> typeCast: <span class="hljs-function"><span class="hljs-params">(field, next)</span> -&gt;</span> <span class="hljs-keyword">if</span> field.type <span class="hljs-keyword">is</span> <span class="hljs-string">'TINY'</span> <span class="hljs-keyword">and</span> field.length <span class="hljs-keyword">is</span> <span class="hljs-number">1</span> <span class="hljs-keyword">return</span> field.string() <span class="hljs-keyword">is</span> <span class="hljs-string">'1'</span> <span class="hljs-keyword">return</span> next() connection.<span class="hljs-literal">on</span> <span class="hljs-string">'error'</span>, <span class="hljs-function">-&gt;</span> <span class="hljs-built_in">console</span>.error <span class="hljs-string">'MYSQL ERROR'</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">Mysql</span></span> Select: <span class="hljs-function"><span class="hljs-params">(table, fields, where, options, done)</span> -&gt;</span> f = fields <span class="hljs-keyword">if</span> Array.isArray fields f = fields.join(<span class="hljs-string">','</span>) query = <span class="hljs-string">'select '</span> + f + <span class="hljs-string">' from '</span> + table hasConditions = _(where).size() &gt; <span class="hljs-number">0</span> <span class="hljs-keyword">if</span> where? <span class="hljs-keyword">if</span> (hasConditions) query += <span class="hljs-string">' where '</span> + _(where).map(@_MakeSQLCondition).join(<span class="hljs-string">' and '</span>); <span class="hljs-keyword">if</span> options? <span class="hljs-keyword">if</span> options.sortBy? query += <span class="hljs-string">' order by '</span> + options.sortBy <span class="hljs-keyword">if</span> options.reverse query += <span class="hljs-string">' desc'</span> <span class="hljs-keyword">if</span> options.limit? limit = <span class="hljs-string">''</span> <span class="hljs-keyword">if</span> options.offset? limit += options.offset + <span class="hljs-string">', '</span> limit += options.limit - options.offset <span class="hljs-keyword">else</span> limit += options.limit query += <span class="hljs-string">' limit '</span> + limit connection.query query, where, <span class="hljs-function"><span class="hljs-params">(err, rows)</span> -&gt;</span> <span class="hljs-keyword">return</span> done err <span class="hljs-keyword">if</span> err? done <span class="hljs-literal">null</span>, rows Insert: <span class="hljs-function"><span class="hljs-params">(table, fields, done)</span> -&gt;</span> query = <span class="hljs-string">'insert into '</span> + table + <span class="hljs-string">' set ?'</span> connection.query query, fields, <span class="hljs-function"><span class="hljs-params">(err, results)</span> -&gt;</span> <span class="hljs-keyword">return</span> done err <span class="hljs-keyword">if</span> err? done <span class="hljs-literal">null</span>, results.insertId Update: <span class="hljs-function"><span class="hljs-params">(table, fields, where, done)</span> -&gt;</span> query = <span class="hljs-string">'update '</span> + table + <span class="hljs-string">' set ? where '</span> + _(where).map(<span class="hljs-function"><span class="hljs-params">(value, key)</span> -&gt;</span> <span class="hljs-keyword">return</span> mysql.escapeId(key) + <span class="hljs-string">' = '</span> + mysql.escape(value) ).join(<span class="hljs-string">' and '</span>) connection.query query, fields, <span class="hljs-function"><span class="hljs-params">(err, results)</span> -&gt;</span> <span class="hljs-keyword">return</span> done err <span class="hljs-keyword">if</span> err? done <span class="hljs-literal">null</span>, results.affectedRows Delete: <span class="hljs-function"><span class="hljs-params">(table, where, done)</span> -&gt;</span> query = <span class="hljs-string">'delete from '</span> + table + <span class="hljs-string">' where '</span> + _(where).map(<span class="hljs-function"><span class="hljs-params">(value, key)</span> -&gt;</span> <span class="hljs-keyword">return</span> mysql.escapeId(key) + <span class="hljs-string">' = '</span> + mysql.escape(value) ).join(<span class="hljs-string">' and '</span>) connection.query query, {}, <span class="hljs-function"><span class="hljs-params">(err, results)</span> -&gt;</span> <span class="hljs-keyword">return</span> done err <span class="hljs-keyword">if</span> err? done <span class="hljs-literal">null</span>, results.affectedRows _MakeSQLCondition: <span class="hljs-function"><span class="hljs-params">(value, key)</span> -&gt;</span> safeKey = mysql.escapeId key</pre></div></div> </li> <li id="section-2"> <div class="annotation"> <div class="pilwrap "> <a class="pilcrow" href="#section-2">&#182;</a> </div> <p>normal case A = B</p> </div> <div class="content"><div class='highlight'><pre> <span class="hljs-keyword">if</span> !_.isObject value <span class="hljs-keyword">return</span> safeKey + <span class="hljs-string">' = '</span> + mysql.escape value op = <span class="hljs-keyword">if</span> value.sup <span class="hljs-keyword">then</span> <span class="hljs-string">' &gt; '</span> <span class="hljs-keyword">else</span> <span class="hljs-string">' &lt; '</span> <span class="hljs-keyword">return</span> safeKey + op + mysql.escape value.val _NextId: <span class="hljs-function"><span class="hljs-params">(name, done)</span> -&gt;</span> query = <span class="hljs-string">"select id from <span class="hljs-subst">#{name}</span> order by id desc limit 1;"</span> connection.query query, where, <span class="hljs-function"><span class="hljs-params">(err, rows)</span> -&gt;</span> <span class="hljs-keyword">return</span> done err <span class="hljs-keyword">if</span> err? done <span class="hljs-literal">null</span>, rows<span class="hljs-number">.0</span>.id + <span class="hljs-number">1</span> || <span class="hljs-number">1</span> <span class="hljs-keyword">new</span> Mysql <span class="hljs-built_in">module</span>.exports.AddTable = <span class="hljs-function"><span class="hljs-params">(name)</span> -&gt;</span></pre></div></div> </li> </ul> </div> </body> </html>