documentation updates for 0.4.10 release

This commit is contained in:
Tim Griesser 2013-10-14 08:17:05 -04:00
parent b70e787d25
commit 6919c9586d
11 changed files with 116 additions and 35 deletions

View File

@ -545,8 +545,8 @@ f.event={add:function(a,c,d,e,g){var h,i,j,k,l,m,n,o,p,q,r,s;if(!(a.nodeType===3
"type": "heading",
"data": {
"level": 2,
"title": "Knex.js 0.4.9",
"slug": "knexjs-049"
"title": "Knex.js 0.4.10",
"slug": "knexjs-0410"
},
"depth": 2
}

View File

@ -33,14 +33,17 @@ to keep the interface database agnostic.</p></div></div><div class="code"><div c
<span class="p">},</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>Compiles the <code>select</code> statement, or nested sub-selects
by calling each of the component compilers, trimming out
the empties, and returning a generated query string.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">compileSelect</span><span class="o">:</span> <span class="kd">function</span><span class="p">(</span><span class="nx">qb</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">sql</span> <span class="o">=</span> <span class="p">{};</span>
<span class="kd">var</span> <span class="nx">sql</span> <span class="o">=</span> <span class="p">[];</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">_</span><span class="p">.</span><span class="nx">isEmpty</span><span class="p">(</span><span class="nx">qb</span><span class="p">.</span><span class="nx">columns</span><span class="p">))</span> <span class="nx">qb</span><span class="p">.</span><span class="nx">columns</span> <span class="o">=</span> <span class="p">[</span><span class="s1">&#39;*&#39;</span><span class="p">];</span>
<span class="k">for</span> <span class="p">(</span><span class="kd">var</span> <span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> <span class="nx">l</span> <span class="o">=</span> <span class="nx">components</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&lt;</span> <span class="nx">l</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">component</span> <span class="o">=</span> <span class="nx">components</span><span class="p">[</span><span class="nx">i</span><span class="p">];</span>
<span class="kd">var</span> <span class="nx">result</span> <span class="o">=</span> <span class="nx">_</span><span class="p">.</span><span class="nx">result</span><span class="p">(</span><span class="nx">qb</span><span class="p">,</span> <span class="nx">component</span><span class="p">);</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">result</span> <span class="o">!=</span> <span class="kc">null</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">sql</span><span class="p">[</span><span class="nx">component</span><span class="p">]</span> <span class="o">=</span> <span class="k">this</span><span class="p">[</span><span class="s1">&#39;compile&#39;</span> <span class="o">+</span> <span class="nx">Helpers</span><span class="p">.</span><span class="nx">capitalize</span><span class="p">(</span><span class="nx">component</span><span class="p">)](</span><span class="nx">qb</span><span class="p">,</span> <span class="nx">result</span><span class="p">);</span>
<span class="nx">sql</span><span class="p">.</span><span class="nx">push</span><span class="p">(</span><span class="k">this</span><span class="p">[</span><span class="s1">&#39;compile&#39;</span> <span class="o">+</span> <span class="nx">Helpers</span><span class="p">.</span><span class="nx">capitalize</span><span class="p">(</span><span class="nx">component</span><span class="p">)](</span><span class="nx">qb</span><span class="p">,</span> <span class="nx">result</span><span class="p">));</span>
<span class="p">}</span>
<span class="p">}</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>If there is a transaction, and we have either <code>forUpdate</code> or <code>forShare</code> specified,
call the appropriate additions to the select statement.</p></div></div><div class="code"><div class="wrapper"> <span class="k">if</span> <span class="p">(</span><span class="nx">qb</span><span class="p">.</span><span class="nx">transaction</span> <span class="o">&amp;&amp;</span> <span class="nx">qb</span><span class="p">.</span><span class="nx">flags</span><span class="p">.</span><span class="nx">selectMode</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">sql</span><span class="p">.</span><span class="nx">push</span><span class="p">(</span><span class="k">this</span><span class="p">[</span><span class="s1">&#39;compile&#39;</span> <span class="o">+</span> <span class="nx">qb</span><span class="p">.</span><span class="nx">flags</span><span class="p">.</span><span class="nx">selectMode</span><span class="p">](</span><span class="nx">qb</span><span class="p">));</span>
<span class="p">}</span>
<span class="k">return</span> <span class="nx">_</span><span class="p">.</span><span class="nx">compact</span><span class="p">(</span><span class="nx">sql</span><span class="p">).</span><span class="nx">join</span><span class="p">(</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>Compiles an aggregate query.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">compileAggregate</span><span class="o">:</span> <span class="kd">function</span><span class="p">(</span><span class="nx">qb</span><span class="p">)</span> <span class="p">{</span>
@ -180,6 +183,10 @@ query to be used for <code>insert</code> and <code>update</code> without issue.<
<span class="k">return</span> <span class="s1">&#39;delete from &#39;</span> <span class="o">+</span> <span class="nx">table</span> <span class="o">+</span> <span class="s1">&#39; &#39;</span> <span class="o">+</span> <span class="nx">where</span><span class="p">;</span>
<span class="p">},</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>Compiles a <code>truncate</code> query.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">compileTruncate</span><span class="o">:</span> <span class="kd">function</span><span class="p">(</span><span class="nx">qb</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="s1">&#39;truncate &#39;</span> <span class="o">+</span> <span class="k">this</span><span class="p">.</span><span class="nx">wrapTable</span><span class="p">(</span><span class="nx">qb</span><span class="p">.</span><span class="nx">table</span><span class="p">);</span>
<span class="p">},</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>Adds a <code>for update</code> clause to the query, relevant with transactions.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">compileForUpdate</span><span class="o">:</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="k">return</span> <span class="s1">&#39;for update&#39;</span><span class="p">;</span>
<span class="p">},</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>Adds a <code>for share</code> clause to the query, relevant with transactions.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">compileForShare</span><span class="o">:</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="k">return</span> <span class="s1">&#39;for share&#39;</span><span class="p">;</span>
<span class="p">},</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>Puts the appropriate wrapper around a value depending on the database
engine, unless it's a knex.raw value, in which case it's left alone.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">wrap</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="kd">var</span> <span class="nx">segments</span><span class="p">;</span>

View File

@ -49,7 +49,8 @@ then join them all together with select unions to complete the queries.</p></div
<span class="nx">sql</span><span class="p">.</span><span class="nx">push</span><span class="p">(</span><span class="s1">&#39;delete from sqlite_sequence where name = &#39;</span> <span class="o">+</span> <span class="nx">table</span><span class="p">);</span>
<span class="nx">sql</span><span class="p">.</span><span class="nx">push</span><span class="p">(</span><span class="s1">&#39;delete from &#39;</span> <span class="o">+</span> <span class="nx">table</span><span class="p">);</span>
<span class="k">return</span> <span class="nx">sql</span><span class="p">;</span>
<span class="p">}</span>
<span class="p">},</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>For share and for update are not available in sqlite3.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">compileForUpdate</span><span class="o">:</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{},</span>
<span class="nx">compileForShare</span><span class="o">:</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{}</span>
<span class="p">},</span> <span class="nx">baseGrammar</span><span class="p">);</span>

View File

@ -16,29 +16,30 @@ the pool if it doesn't already exist.</p></div></div><div class="code"><div clas
<span class="nx">_</span><span class="p">.</span><span class="nx">bindAll</span><span class="p">(</span><span class="k">this</span><span class="p">,</span> <span class="s1">&#39;acquire&#39;</span><span class="p">,</span> <span class="s1">&#39;release&#39;</span><span class="p">);</span>
<span class="k">this</span><span class="p">.</span><span class="nx">config</span> <span class="o">=</span> <span class="nx">config</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="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">config</span> <span class="o">||</span> <span class="o">!</span><span class="nx">client</span><span class="p">)</span> <span class="p">{</span>
<span class="k">throw</span> <span class="k">new</span> <span class="nb">Error</span><span class="p">(</span><span class="s1">&#39;The config and client are required to use the pool module.&#39;</span><span class="p">);</span>
<span class="p">}</span>
<span class="k">this</span><span class="p">.</span><span class="nx">init</span><span class="p">();</span>
<span class="p">};</span>
<span class="nx">Pool</span><span class="p">.</span><span class="nx">prototype</span> <span class="o">=</span> <span class="p">{</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>Some basic defaults for the pool... generally you don't really want to keep
mutable objects on the prototype, but in this case we're not supposed to be
messing around with them, so it should be alright.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">defaults</span><span class="o">:</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">poolInstance</span> <span class="o">=</span> <span class="k">this</span><span class="p">;</span>
<span class="nx">Pool</span><span class="p">.</span><span class="nx">prototype</span> <span class="o">=</span> <span class="p">{</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>Some basic defaults for the pool...</p></div></div><div class="code"><div class="wrapper"> <span class="nx">defaults</span><span class="o">:</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">pool</span> <span class="o">=</span> <span class="k">this</span><span class="p">;</span>
<span class="k">return</span> <span class="p">{</span>
<span class="nx">min</span><span class="o">:</span> <span class="mi">2</span><span class="p">,</span>
<span class="nx">max</span><span class="o">:</span> <span class="mi">10</span><span class="p">,</span>
<span class="nx">create</span><span class="o">:</span> <span class="kd">function</span><span class="p">(</span><span class="nx">callback</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">promise</span> <span class="o">=</span> <span class="nx">poolInstance</span><span class="p">.</span><span class="nx">client</span><span class="p">.</span><span class="nx">getRawConnection</span><span class="p">()</span>
<span class="kd">var</span> <span class="nx">promise</span> <span class="o">=</span> <span class="nx">pool</span><span class="p">.</span><span class="nx">client</span><span class="p">.</span><span class="nx">getRawConnection</span><span class="p">()</span>
<span class="p">.</span><span class="nx">tap</span><span class="p">(</span><span class="kd">function</span><span class="p">(</span><span class="nx">connection</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">connection</span><span class="p">.</span><span class="nx">__cid</span> <span class="o">=</span> <span class="nx">_</span><span class="p">.</span><span class="nx">uniqueId</span><span class="p">(</span><span class="s1">&#39;__cid&#39;</span><span class="p">);</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">poolInstance</span><span class="p">.</span><span class="nx">config</span><span class="p">.</span><span class="nx">afterCreate</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="nx">nodefn</span><span class="p">.</span><span class="nx">call</span><span class="p">(</span><span class="nx">poolInstance</span><span class="p">.</span><span class="nx">config</span><span class="p">.</span><span class="nx">afterCreate</span><span class="p">,</span> <span class="nx">connection</span><span class="p">);</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">pool</span><span class="p">.</span><span class="nx">config</span><span class="p">.</span><span class="nx">afterCreate</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="nx">nodefn</span><span class="p">.</span><span class="nx">call</span><span class="p">(</span><span class="nx">pool</span><span class="p">.</span><span class="nx">config</span><span class="p">.</span><span class="nx">afterCreate</span><span class="p">,</span> <span class="nx">connection</span><span class="p">);</span>
<span class="p">}</span>
<span class="p">});</span>
<span class="k">return</span> <span class="nx">nodefn</span><span class="p">.</span><span class="nx">bindCallback</span><span class="p">(</span><span class="nx">promise</span><span class="p">,</span> <span class="nx">callback</span><span class="p">);</span>
<span class="p">},</span>
<span class="nx">destroy</span><span class="o">:</span> <span class="kd">function</span><span class="p">(</span><span class="nx">connection</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">poolInstance</span><span class="p">.</span><span class="nx">config</span><span class="p">.</span><span class="nx">beforeDestroy</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="nx">poolInstance</span><span class="p">.</span><span class="nx">config</span><span class="p">.</span><span class="nx">beforeDestroy</span><span class="p">(</span><span class="nx">connection</span><span class="p">,</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">pool</span><span class="p">.</span><span class="nx">config</span><span class="p">.</span><span class="nx">beforeDestroy</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="nx">pool</span><span class="p">.</span><span class="nx">config</span><span class="p">.</span><span class="nx">beforeDestroy</span><span class="p">(</span><span class="nx">connection</span><span class="p">,</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="nx">connection</span><span class="p">.</span><span class="nx">end</span><span class="p">();</span>
<span class="p">});</span>
<span class="p">}</span>
@ -57,10 +58,14 @@ options passed into the constructor.</p></div></div><div class="code"><div class
<span class="k">this</span><span class="p">.</span><span class="nx">poolInstance</span><span class="p">.</span><span class="nx">release</span><span class="p">(</span><span class="nx">connection</span><span class="p">,</span> <span class="nx">callback</span><span class="p">);</span>
<span class="p">},</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>Tear down the pool, only necessary if you need it.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">destroy</span><span class="o">:</span> <span class="kd">function</span><span class="p">(</span><span class="nx">callback</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">poolInstance</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">poolInstance</span><span class="p">;</span>
<span class="nx">poolInstance</span><span class="p">.</span><span class="nx">drain</span><span class="p">(</span><span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="nx">poolInstance</span><span class="p">.</span><span class="nx">destroyAllNow</span><span class="p">(</span><span class="nx">callback</span><span class="p">);</span>
<span class="p">});</span>
<span class="k">delete</span> <span class="k">this</span><span class="p">.</span><span class="nx">poolInstance</span><span class="p">;</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">poolInstance</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">poolInstance</span><span class="p">.</span><span class="nx">drain</span><span class="p">(</span><span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="nx">poolInstance</span><span class="p">.</span><span class="nx">destroyAllNow</span><span class="p">(</span><span class="nx">callback</span><span class="p">);</span>
<span class="p">});</span>
<span class="k">delete</span> <span class="k">this</span><span class="p">.</span><span class="nx">poolInstance</span><span class="p">;</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="nx">callback</span><span class="p">();</span>
<span class="p">}</span>
<span class="k">return</span> <span class="k">this</span><span class="p">;</span>
<span class="p">}</span>

View File

@ -8,6 +8,8 @@
<span class="k">if</span> <span class="p">(</span><span class="nx">builder</span><span class="p">.</span><span class="nx">type</span> <span class="o">===</span> <span class="s1">&#39;insert&#39;</span><span class="p">)</span> <span class="nx">response</span> <span class="o">=</span> <span class="p">[</span><span class="nx">response</span><span class="p">.</span><span class="nx">insertId</span><span class="p">];</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">builder</span><span class="p">.</span><span class="nx">type</span> <span class="o">===</span> <span class="s1">&#39;delete&#39;</span> <span class="o">||</span> <span class="nx">builder</span><span class="p">.</span><span class="nx">type</span> <span class="o">===</span> <span class="s1">&#39;update&#39;</span><span class="p">)</span> <span class="nx">response</span> <span class="o">=</span> <span class="nx">response</span><span class="p">.</span><span class="nx">affectedRows</span><span class="p">;</span>
<span class="k">return</span> <span class="nx">response</span><span class="p">;</span>
<span class="p">},</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>Adds a <code>for share</code> clause to the query, relevant with transactions.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">compileForShare</span><span class="o">:</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="k">return</span> <span class="s1">&#39;lock in share mode&#39;</span><span class="p">;</span>
<span class="p">}</span>
<span class="p">},</span> <span class="nx">baseGrammar</span><span class="p">);</span></div></div></div></div></body></html>

View File

@ -16,8 +16,8 @@
<span class="kd">var</span> <span class="nx">sql</span> <span class="o">=</span> <span class="nx">baseSchemaGrammar</span><span class="p">.</span><span class="nx">compileCreateTable</span><span class="p">.</span><span class="nx">call</span><span class="p">(</span><span class="k">this</span><span class="p">,</span> <span class="nx">builder</span><span class="p">,</span> <span class="nx">command</span><span class="p">);</span>
<span class="kd">var</span> <span class="nx">conn</span> <span class="o">=</span> <span class="nx">builder</span><span class="p">.</span><span class="nx">client</span><span class="p">.</span><span class="nx">connectionSettings</span><span class="p">;</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">conn</span><span class="p">.</span><span class="nx">charset</span><span class="p">)</span> <span class="nx">sql</span> <span class="o">+=</span> <span class="s1">&#39; default character set &#39;</span> <span class="o">+</span> <span class="nx">conn</span><span class="p">.</span><span class="nx">charset</span><span class="p">;</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">conn</span><span class="p">.</span><span class="nx">collation</span><span class="p">)</span> <span class="nx">sql</span> <span class="o">+=</span> <span class="s1">&#39; collate &#39;</span> <span class="o">+</span> <span class="nx">conn</span><span class="p">.</span><span class="nx">collation</span><span class="p">;</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">builder</span><span class="p">.</span><span class="nx">flags</span><span class="p">.</span><span class="nx">charset</span> <span class="o">||</span> <span class="nx">conn</span><span class="p">.</span><span class="nx">charset</span><span class="p">)</span> <span class="nx">sql</span> <span class="o">+=</span> <span class="s1">&#39; default character set &#39;</span> <span class="o">+</span> <span class="p">(</span><span class="nx">builder</span><span class="p">.</span><span class="nx">flags</span><span class="p">.</span><span class="nx">charset</span> <span class="o">||</span> <span class="nx">conn</span><span class="p">.</span><span class="nx">charset</span><span class="p">);</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">builder</span><span class="p">.</span><span class="nx">flags</span><span class="p">.</span><span class="nx">collation</span> <span class="o">||</span> <span class="nx">conn</span><span class="p">.</span><span class="nx">collation</span><span class="p">)</span> <span class="nx">sql</span> <span class="o">+=</span> <span class="s1">&#39; collate &#39;</span> <span class="o">+</span> <span class="p">(</span><span class="nx">builder</span><span class="p">.</span><span class="nx">flags</span><span class="p">.</span><span class="nx">collation</span> <span class="o">||</span> <span class="nx">conn</span><span class="p">.</span><span class="nx">collation</span><span class="p">);</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">builder</span><span class="p">.</span><span class="nx">flags</span><span class="p">.</span><span class="nx">engine</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">sql</span> <span class="o">+=</span> <span class="s1">&#39; engine = &#39;</span> <span class="o">+</span> <span class="nx">builder</span><span class="p">.</span><span class="nx">flags</span><span class="p">.</span><span class="nx">engine</span><span class="p">;</span>
<span class="p">}</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>Checks if the table is commented</p></div></div><div class="code"><div class="wrapper"> <span class="kd">var</span> <span class="nx">isCommented</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">getCommandByName</span><span class="p">(</span><span class="nx">builder</span><span class="p">,</span> <span class="s1">&#39;comment&#39;</span><span class="p">);</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>TODO: Handle max comment length.</p></div></div><div class="code"><div class="wrapper"> <span class="kd">var</span> <span class="nx">maxTableCommentLength</span> <span class="o">=</span> <span class="mi">60</span><span class="p">;</span>

View File

@ -1,4 +1,4 @@
<!DOCTYPE html><html lang="en"><head><title>knex</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="knex"><meta name="groc-project-path" content="knex.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">knex.js</div></div><div id="document"><div class="segment"><div class="comments"><div class="wrapper"><h2 id="knexjs-049">Knex.js 0.4.9</h2></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><pre><code>(c) 2013 Tim Griesser
<!DOCTYPE html><html lang="en"><head><title>knex</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="knex"><meta name="groc-project-path" content="knex.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">knex.js</div></div><div id="document"><div class="segment"><div class="comments"><div class="wrapper"><h2 id="knexjs-0410">Knex.js 0.4.10</h2></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><pre><code>(c) 2013 Tim Griesser
Knex may be freely distributed under the MIT license.
For details and documentation:
http://knexjs.org
@ -52,7 +52,7 @@ rather than wait on an async load of a client library.</p></div></div><div class
<span class="p">};</span>
<span class="p">});</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>Method to run a new <code>Raw</code> query on the current client.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">knex</span><span class="p">.</span><span class="nx">raw</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">sql</span><span class="p">,</span> <span class="nx">bindings</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="k">new</span> <span class="nx">Raw</span><span class="p">(</span><span class="nx">knex</span><span class="p">).</span><span class="nx">query</span><span class="p">(</span><span class="nx">sql</span><span class="p">,</span> <span class="nx">bindings</span><span class="p">);</span>
<span class="p">};</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>Keep a reference to the current client.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">knex</span><span class="p">.</span><span class="nx">client</span> <span class="o">=</span> <span class="nx">client</span><span class="p">;</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>Keep in sync with package.json</p></div></div><div class="code"><div class="wrapper"> <span class="nx">knex</span><span class="p">.</span><span class="nx">VERSION</span> <span class="o">=</span> <span class="s1">&#39;0.4.9&#39;</span><span class="p">;</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>Runs a new transaction, taking a container and returning a promise
<span class="p">};</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>Keep a reference to the current client.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">knex</span><span class="p">.</span><span class="nx">client</span> <span class="o">=</span> <span class="nx">client</span><span class="p">;</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>Keep in sync with package.json</p></div></div><div class="code"><div class="wrapper"> <span class="nx">knex</span><span class="p">.</span><span class="nx">VERSION</span> <span class="o">=</span> <span class="s1">&#39;0.4.10&#39;</span><span class="p">;</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>Runs a new transaction, taking a container and returning a promise
for when the transaction is resolved.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">knex</span><span class="p">.</span><span class="nx">transaction</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">container</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="k">new</span> <span class="nx">Transaction</span><span class="p">(</span><span class="nx">knex</span><span class="p">).</span><span class="nx">run</span><span class="p">(</span><span class="nx">container</span><span class="p">);</span>
<span class="p">};</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>Return the new <code>Knex</code> instance.</p></div></div><div class="code"><div class="wrapper"> <span class="k">return</span> <span class="nx">knex</span><span class="p">;</span>

View File

@ -69,8 +69,15 @@ and have it come out fine.</p></div></div><div class="code"><div class="wrapper"
the currently running transaction</p></div></div><div class="code"><div class="wrapper"> <span class="nx">transacting</span><span class="o">:</span> <span class="kd">function</span><span class="p">(</span><span class="nx">t</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">t</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">transaction</span><span class="p">)</span> <span class="k">throw</span> <span class="k">new</span> <span class="nb">Error</span><span class="p">(</span><span class="s1">&#39;A transaction has already been set for the current query chain&#39;</span><span class="p">);</span>
<span class="kd">var</span> <span class="nx">flags</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">flags</span><span class="p">;</span>
<span class="k">this</span><span class="p">.</span><span class="nx">transaction</span> <span class="o">=</span> <span class="nx">t</span><span class="p">;</span>
<span class="k">this</span><span class="p">.</span><span class="nx">usingConnection</span> <span class="o">=</span> <span class="nx">t</span><span class="p">.</span><span class="nx">connection</span><span class="p">;</span>
<span class="k">this</span><span class="p">.</span><span class="nx">usingConnection</span> <span class="o">=</span> <span class="nx">t</span><span class="p">.</span><span class="nx">connection</span><span class="p">;</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>Add "forUpdate" and "forShare" here, since these are only relevant
within the context of a transaction.</p></div></div><div class="code"><div class="wrapper"> <span class="k">this</span><span class="p">.</span><span class="nx">forUpdate</span> <span class="o">=</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="nx">flags</span><span class="p">.</span><span class="nx">selectMode</span> <span class="o">=</span> <span class="s1">&#39;ForUpdate&#39;</span><span class="p">;</span>
<span class="p">};</span>
<span class="k">this</span><span class="p">.</span><span class="nx">forShare</span> <span class="o">=</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="nx">flags</span><span class="p">.</span><span class="nx">selectMode</span> <span class="o">=</span> <span class="s1">&#39;ForShare&#39;</span><span class="p">;</span>
<span class="p">};</span>
<span class="p">}</span>
<span class="k">return</span> <span class="k">this</span><span class="p">;</span>
<span class="p">}</span>

View File

@ -43,6 +43,14 @@
<span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="k">this</span><span class="p">.</span><span class="nx">creating</span><span class="p">())</span> <span class="k">throw</span> <span class="k">new</span> <span class="nb">Error</span><span class="p">(</span><span class="s1">&#39;The `engine` modifier may only be used while creating a table.&#39;</span><span class="p">);</span>
<span class="k">this</span><span class="p">.</span><span class="nx">flags</span><span class="p">.</span><span class="nx">engine</span> <span class="o">=</span> <span class="nx">name</span><span class="p">;</span>
<span class="k">return</span> <span class="k">this</span><span class="p">;</span>
<span class="p">},</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>Sets the character set for the table in MySql</p></div></div><div class="code"><div class="wrapper"> <span class="nx">charset</span><span class="o">:</span> <span class="kd">function</span><span class="p">(</span><span class="nx">charset</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="k">this</span><span class="p">.</span><span class="nx">creating</span><span class="p">())</span> <span class="k">throw</span> <span class="k">new</span> <span class="nb">Error</span><span class="p">(</span><span class="s1">&#39;The `engine` modifier may only be used while creating a table.&#39;</span><span class="p">);</span>
<span class="k">this</span><span class="p">.</span><span class="nx">flags</span><span class="p">.</span><span class="nx">charset</span> <span class="o">=</span> <span class="nx">charset</span><span class="p">;</span>
<span class="k">return</span> <span class="k">this</span><span class="p">;</span>
<span class="p">},</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>Sets the collation for the table in MySql</p></div></div><div class="code"><div class="wrapper"> <span class="nx">collate</span><span class="o">:</span> <span class="kd">function</span><span class="p">(</span><span class="nx">collation</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="k">this</span><span class="p">.</span><span class="nx">creating</span><span class="p">())</span> <span class="k">throw</span> <span class="k">new</span> <span class="nb">Error</span><span class="p">(</span><span class="s1">&#39;The `engine` modifier may only be used while creating a table.&#39;</span><span class="p">);</span>
<span class="k">this</span><span class="p">.</span><span class="nx">flags</span><span class="p">.</span><span class="nx">collation</span> <span class="o">=</span> <span class="nx">collation</span><span class="p">;</span>
<span class="k">return</span> <span class="k">this</span><span class="p">;</span>
<span class="p">},</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>Adds a comment to the current table being created.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">comment</span><span class="o">:</span> <span class="kd">function</span><span class="p">(</span><span class="nx">comment</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="k">this</span><span class="p">.</span><span class="nx">_addCommand</span><span class="p">(</span><span class="s1">&#39;comment&#39;</span><span class="p">,</span> <span class="p">{</span><span class="nx">comment</span><span class="o">:</span> <span class="nx">comment</span><span class="p">});</span>
<span class="p">},</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>Indicate that the given columns should be dropped.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">dropColumn</span><span class="o">:</span> <span class="kd">function</span><span class="p">(</span><span class="nx">columns</span><span class="p">)</span> <span class="p">{</span>

View File

@ -185,7 +185,7 @@
<div id="sidebar" class="interface">
<a class="toc_title" href="#">
Knex.js <span class="version">(0.4.9)</span>
Knex.js <span class="version">(0.4.10)</span>
</a>
<ul class="toc_section">
<li>&raquo; <a href="https://github.com/tgriesser/knex">GitHub Repository</a></li>
@ -228,6 +228,8 @@
<li> <a href="#Builder-update">update</a></li>
<li> <a href="#Builder-del">del / delete</a></li>
<li> <a href="#Builder-transacting">transacting</a></li>
<li> <a href="#Builder-forUpdate">forUpdate</a></li>
<li> <a href="#Builder-forShare">forShare</a></li>
<li> <a href="#Builder-count">count</a></li>
<li> <a href="#Builder-min">min</a></li>
<li> <a href="#Builder-max">max</a></li>
@ -259,6 +261,8 @@
<li> <a href="#Schema-hasTable">hasTable</a></li>
<li> <a href="#Schema-dropTableIfExists">dropTableIfExists</a></li>
<li> <a href="#Schema-table">table</a></li>
<li> <a href="#Schema-charset">charset</a></li>
<li> <a href="#Schema-collate">collate</a></li>
<li><b><a href="#Schema-Building">Schema Building:</a></b></li>
<li> <a href="#Schema-dropColumn">dropColumn</a></li>
<li> <a href="#Schema-dropColumns">dropColumns</a></li>
@ -280,6 +284,9 @@
<li> <a href="#Schema-json">json</a></li>
<li> <a href="#Schema-uuid">uuid</a></li>
<li> <a href="#Schema-comment">comment</a></li>
<li> <a href="#Schema-engine">engine</a></li>
<li> <a href="#Schema-charset">charset</a></li>
<li> <a href="#Schema-collate">collate</a></li>
<li> <a href="#Schema-specificType">specificType</a></li>
<li><a href="#Chainable"><b>Chainable:</b></li>
<li> <a href="#Chainable-index">index</a></li>
@ -353,7 +360,7 @@
</p>
<h2>Latest Release: 0.4.9 - <span class="small"><a href="#changelog">Change Log</a></span></h2>
<h2>Latest Release: 0.4.10 - <span class="small"><a href="#changelog">Change Log</a></span></h2>
<p>
Current Develop &mdash;
@ -478,7 +485,7 @@ knex('table').where('id', 1).select().then(...
</p>
<p id="Builder-select">
<b class="header">select</b><code>.select([*columns])</code>
<b class="header">select</b><code>.select([*columns])</code> <span class="alias">Alias: <b>into</b></span>
<br />
Creates a <tt>select</tt> query, taking an optional array of <b>columns</b> for the query, eventually
defaulting to <tt>*</tt> if none are specified when the query is built. The response of a select call will
@ -846,6 +853,20 @@ knex.transaction(function(t) {
});
</pre>
<p id="Builder-forUpdate">
<b class="header">forUpdate</b><code>.transacting(t).forUpdate()</code>
<br />
Dynamically added after a <a href="#Builder-transacting">transaction</a> is specified,
the <tt>forUpdate</tt> adds a <tt>FOR UPDATE</tt> in PostgreSQL and MySQL during a select statement.
</p>
<p id="Builder-forShare">
<b class="header">forShare</b><code>.transacting(t).forShare()</code>
<br />
Dynamically added after a <a href="#Builder-transacting">transaction</a> is specified,
the <tt>forShare</tt> adds a <tt>FOR SHARE</tt> in PostgreSQL and a <tt>LOCK IN SHARE MODE</tt>
for MySQL during a select statement.
</p>
<p id="Builder-count">
<b class="header">count</b><code>.count(column)</code>
@ -1076,6 +1097,12 @@ knex.schema.table('users', function (table) {
});
</pre>
<p id="Schema-dropTableIfExists">
<b class="header">dropTableIfExists</b><code>knex.schema.dropTableIfExists(tableName)</code>
<br />
Drops a table conditionally if the table exists, specified by <tt>tableName</tt>.
</p>
<h3 id="Schema-Building">Schema Building:</h3>
<p id="Schema-dropColumn">
@ -1202,19 +1229,33 @@ knex.schema.table('users', function (table) {
<tt>char(36)</tt> in other databases.
</p>
<p id="Schema-engine">
<b class="header">engine</b><code>table.engine(val)</code>
<br />
Sets the engine for the database, only available within a <tt>createTable</tt> call, and only
applicable to MySQL.
</p>
<p id="Schema-comment">
<b class="header">comment</b><code>table.comment(value)</code>
<br />
Sets the comment for a table.
</p>
<p id="Schema-engine">
<b class="header">engine</b><code>table.engine(val)</code>
<br />
Sets the engine for the database table, only available within a <tt>createTable</tt> call, and only
applicable to MySQL.
</p>
<p id="Schema-charset">
<b class="header">charset</b><code>table.charset(val)</code>
<br />
Sets the charset for the database table, only available within a <tt>createTable</tt> call, and only
applicable to MySQL.
</p>
<p id="Schema-collate">
<b class="header">collate</b><code>table.collate(val)</code>
<br />
Sets the collation for the database table, only available within a <tt>createTable</tt> call, and only
applicable to MySQL.
</p>
<p id="Schema-specificType">
<b class="header">specificType</b><code>table.specificType(column, value)</code>
<br />
@ -1362,6 +1403,16 @@ knex.raw('select * from users where id = 1').then(function(resp) {
<h2 id="changelog">Change Log</h2>
<p>
<b class="header">0.4.10</b> &mdash; <small><i>Oct 14, 2013</i></small> &mdash; <a href="https://github.com/tgriesser/knex/compare/0.4.9...0.5.0">Diff</a><br />
<ul>
<li>Added <a href="#Builder-forUpdate">forUpdate</a> and <a href="#Builder-forShare">forShare</a> for select modes in transactions. (#84)</li>
<li>Fix bug where current query chain type is not copied on <a href="#Builder-clone">clone</a>. (#90)</li>
<li>Charset and collate are now added as methods on the schema builder. (#89)</li>
<li>Internal pool fixes. (#90)</li>
</ul>
</p>
<p>
<b class="header">0.4.9</b> &mdash; <small><i>Oct 7, 2013</i></small> &mdash; <a href="https://github.com/tgriesser/knex/compare/0.4.8...0.4.9">Diff</a><br />
<ul>

View File

@ -1,4 +1,4 @@
// Knex.js 0.4.9
// Knex.js 0.4.10
// --------------
// (c) 2013 Tim Griesser
@ -91,7 +91,7 @@ define(function(require, exports, module) {
knex.client = client;
// Keep in sync with package.json
knex.VERSION = '0.4.9';
knex.VERSION = '0.4.10';
// Runs a new transaction, taking a container and returning a promise
// for when the transaction is resolved.