knex/docs/lib/dialects/mysql/formatter.html

30 lines
7.0 KiB
HTML
Raw Normal View History

<!DOCTYPE html><html lang="en"><head><title>lib/dialects/mysql/formatter</title></head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0"><meta name="groc-relative-root" content="../../../"><meta name="groc-document-path" content="lib/dialects/mysql/formatter"><meta name="groc-project-path" content="lib/dialects/mysql/formatter.js"><link rel="stylesheet" type="text/css" media="all" href="../../../assets/style.css"><script type="text/javascript" src="../../../assets/behavior.js"></script><body><div id="meta"><div class="file-path">lib/dialects/mysql/formatter.js</div></div><div id="document"><div class="segment"><div class="comments "><div class="wrapper"><h2 id="mysql-formatter">MySQL Formatter</h2></div></div></div><div class="segment"><div class="code"><div class="wrapper"><span class="nx">module</span><span class="p">.</span><span class="nx">exports</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">client</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">Formatter</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;../../formatter&#39;</span><span class="p">);</span>
<span class="kd">var</span> <span class="nx">inherits</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;inherits&#39;</span><span class="p">);</span></div></div></div><div class="segment"><div class="comments "><div class="wrapper"><p>The "formatter" is used to ensure all output is properly
escaped &amp; parameterized.</p></div></div><div class="code"><div class="wrapper"><span class="kd">function</span> <span class="nx">Formatter_MySQL</span><span class="p">()</span> <span class="p">{</span>
<span class="k">this</span><span class="p">.</span><span class="nx">client</span> <span class="o">=</span> <span class="nx">client</span><span class="p">;</span>
<span class="nx">Formatter</span><span class="p">.</span><span class="nx">apply</span><span class="p">(</span><span class="k">this</span><span class="p">,</span> <span class="nx">arguments</span><span class="p">);</span>
<span class="p">}</span>
<span class="nx">inherits</span><span class="p">(</span><span class="nx">Formatter_MySQL</span><span class="p">,</span> <span class="nx">Formatter</span><span class="p">);</span>
<span class="nx">Formatter_MySQL</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">operators</span> <span class="o">=</span> <span class="p">[</span>
<span class="s1">&#39;=&#39;</span><span class="p">,</span> <span class="s1">&#39;&lt;&#39;</span><span class="p">,</span> <span class="s1">&#39;&gt;&#39;</span><span class="p">,</span> <span class="s1">&#39;&lt;=&#39;</span><span class="p">,</span> <span class="s1">&#39;&gt;=&#39;</span><span class="p">,</span> <span class="s1">&#39;&lt;&gt;&#39;</span><span class="p">,</span> <span class="s1">&#39;!=&#39;</span><span class="p">,</span>
<span class="s1">&#39;like&#39;</span><span class="p">,</span> <span class="s1">&#39;not like&#39;</span><span class="p">,</span> <span class="s1">&#39;between&#39;</span><span class="p">,</span> <span class="s1">&#39;ilike&#39;</span><span class="p">,</span>
<span class="s1">&#39;&amp;&#39;</span><span class="p">,</span> <span class="s1">&#39;|&#39;</span><span class="p">,</span> <span class="s1">&#39;^&#39;</span><span class="p">,</span> <span class="s1">&#39;&lt;&lt;&#39;</span><span class="p">,</span> <span class="s1">&#39;&gt;&gt;&#39;</span><span class="p">,</span>
<span class="s1">&#39;rlike&#39;</span><span class="p">,</span> <span class="s1">&#39;regexp&#39;</span><span class="p">,</span> <span class="s1">&#39;not regexp&#39;</span>
<span class="p">];</span></div></div></div><div class="segment"><div class="comments "><div class="wrapper"><p>Wraps a value (column, tableName) with the correct ticks.</p></div></div><div class="code"><div class="wrapper"><span class="nx">Formatter_MySQL</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">wrapValue</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">value</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="p">(</span><span class="nx">value</span> <span class="o">!==</span> <span class="s1">&#39;*&#39;</span> <span class="o">?</span> <span class="s1">&#39;`&#39;</span> <span class="o">+</span> <span class="nx">value</span> <span class="o">+</span> <span class="s1">&#39;`&#39;</span> <span class="o">:</span> <span class="s1">&#39;*&#39;</span><span class="p">);</span>
<span class="p">};</span></div></div></div><div class="segment"><div class="comments "><div class="wrapper"><p>Memoize the calls to "wrap" for a little extra perf.</p></div></div><div class="code"><div class="wrapper"><span class="kd">var</span> <span class="nx">wrapperMemo</span> <span class="o">=</span> <span class="p">(</span><span class="kd">function</span><span class="p">(){</span>
<span class="kd">var</span> <span class="nx">memo</span> <span class="o">=</span> <span class="nb">Object</span><span class="p">.</span><span class="nx">create</span><span class="p">(</span><span class="kc">null</span><span class="p">);</span>
<span class="k">return</span> <span class="kd">function</span><span class="p">(</span><span class="nx">key</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">memo</span><span class="p">.</span><span class="nx">key</span> <span class="o">===</span> <span class="k">void</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">memo</span><span class="p">[</span><span class="nx">key</span><span class="p">]</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">_wrapString</span><span class="p">(</span><span class="nx">key</span><span class="p">);</span>
<span class="p">}</span>
<span class="k">return</span> <span class="nx">memo</span><span class="p">[</span><span class="nx">key</span><span class="p">];</span>
<span class="p">};</span>
<span class="p">}());</span>
<span class="nx">Formatter_MySQL</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">_wrap</span> <span class="o">=</span> <span class="nx">wrapperMemo</span><span class="p">;</span></div></div></div><div class="segment"><div class="comments "><div class="wrapper"><p>Assign the formatter to the the client.</p></div></div><div class="code"><div class="wrapper"><span class="nx">client</span><span class="p">.</span><span class="nx">Formatter</span> <span class="o">=</span> <span class="nx">Formatter_MySQL</span><span class="p">;</span>
<span class="p">};</span></div></div></div></div></body></html>