more cleanup & docs

This commit is contained in:
Tim Griesser 2013-09-13 16:58:38 -04:00
parent 5ca81a5cb5
commit 092cfc6059
24 changed files with 185 additions and 76 deletions

View File

@ -74,7 +74,7 @@ define(function(require, exports) {
// Release a connection back to the connection pool.
release: function(connection, callback) {
return this.poolInstance.release(connection, callback);
this.poolInstance.release(connection, callback);
},
// Tear down the pool, only necessary if you need it.

View File

@ -283,7 +283,17 @@ 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
"title": "cordova"
},
"depth": 3,
"outline": []
"outline": [
{
"type": "heading",
"data": {
"level": 2,
"title": "SQLite3 - Cordova (PhoneGap)",
"slug": "sqlite3-cordova-phonegap"
},
"depth": 2
}
]
}, {
"type": "file",
"data": {
@ -299,7 +309,17 @@ 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
"title": "websql"
},
"depth": 3,
"outline": []
"outline": [
{
"type": "heading",
"data": {
"level": 2,
"title": "SQLite3 - WebSQL",
"slug": "sqlite3-websql"
},
"depth": 2
}
]
}
]
}
@ -467,7 +487,17 @@ 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
"title": "migrate"
},
"depth": 2,
"outline": []
"outline": [
{
"type": "heading",
"data": {
"level": 2,
"title": "Migrate (WIP)",
"slug": "migrate-wip"
},
"depth": 2
}
]
}, {
"type": "file",
"data": {
@ -483,7 +513,17 @@ 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
"title": "raw"
},
"depth": 2,
"outline": []
"outline": [
{
"type": "heading",
"data": {
"level": 2,
"title": "Raw",
"slug": "raw"
},
"depth": 2
}
]
}, {
"type": "file",
"data": {
@ -499,7 +539,17 @@ 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
"title": "schemabuilder"
},
"depth": 2,
"outline": []
"outline": [
{
"type": "heading",
"data": {
"level": 2,
"title": "Schema Builder",
"slug": "schema-builder"
},
"depth": 2
}
]
}, {
"type": "file",
"data": {
@ -515,7 +565,17 @@ 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
"title": "schemainterface"
},
"depth": 2,
"outline": []
"outline": [
{
"type": "heading",
"data": {
"level": 2,
"title": "Schema Interface",
"slug": "schema-interface"
},
"depth": 2
}
]
}, {
"type": "file",
"data": {
@ -557,7 +617,17 @@ 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
"title": "transaction"
},
"depth": 2,
"outline": []
"outline": [
{
"type": "heading",
"data": {
"level": 2,
"title": "Transaction",
"slug": "transaction"
},
"depth": 2
}
]
}
]
}

View File

@ -7,16 +7,14 @@
<span class="kd">var</span> <span class="nx">Helpers</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;../lib/helpers&#39;</span><span class="p">).</span><span class="nx">Helpers</span><span class="p">;</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>The <code>ClientBase</code> is assumed as the object that all database <code>clients</code>
inherit from, and is used in an <code>instanceof</code> check when initializing the
library. If you wish to write or customize an adapter, just inherit from
this base, with ClientBase.extend, and you're good to go.</p></div></div><div class="code"><div class="wrapper"> <span class="kd">var</span> <span class="nx">ClientBase</span> <span class="o">=</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{};</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>The methods assumed when building a client.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">ClientBase</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>Gets the raw connection for the current client.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">getRawConnection</span><span class="o">:</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{},</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>Execute a query on the specified <code>Builder</code> or <code>SchemaBuilder</code>
this base, with <code>ClientBase.extend</code>, and you're good to go.</p></div></div><div class="code"><div class="wrapper"> <span class="kd">var</span> <span class="nx">ClientBase</span> <span class="o">=</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{};</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>The methods assumed when building a client.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">ClientBase</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>Gets the raw connection for the current client.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">getRawConnection</span><span class="o">:</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{},</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>Execute a query on the specified <code>Builder</code> or <code>SchemaBuilder</code>
interface. If a <code>connection</code> is specified, use it, otherwise
acquire a connection, and then dispose of it when we're done.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">query</span><span class="o">:</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{},</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>Retrieves a connection from the connection pool,
returning a promise.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">getConnection</span><span class="o">:</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{},</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>Releases a connection from the connection pool,
returning a promise.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">releaseConnection</span><span class="o">:</span> <span class="kd">function</span><span class="p">(</span><span class="nx">conn</span><span class="p">)</span> <span class="p">{},</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>Begins a transaction statement on the instance,
resolving with the connection of the current transaction.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">startTransaction</span><span class="o">:</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{},</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>Finishes a transaction, taking the <code>type</code></p></div></div><div class="code"><div class="wrapper"> <span class="nx">finishTransaction</span><span class="o">:</span> <span class="kd">function</span><span class="p">(</span><span class="nx">type</span><span class="p">,</span> <span class="nx">trans</span><span class="p">,</span> <span class="nx">dfd</span><span class="p">,</span> <span class="nx">msg</span><span class="p">)</span> <span class="p">{},</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>The pool defaults.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">poolDefaults</span><span class="o">:</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{}</span>
resolving with the connection of the current transaction.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">startTransaction</span><span class="o">:</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{},</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>Finishes a transaction, taking the <code>type</code></p></div></div><div class="code"><div class="wrapper"> <span class="nx">finishTransaction</span><span class="o">:</span> <span class="kd">function</span><span class="p">(</span><span class="nx">type</span><span class="p">,</span> <span class="nx">transaction</span><span class="p">,</span> <span class="nx">msg</span><span class="p">)</span> <span class="p">{},</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>The pool defaults.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">poolDefaults</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">ClientBase</span><span class="p">.</span><span class="nx">extend</span> <span class="o">=</span> <span class="nx">Helpers</span><span class="p">.</span><span class="nx">extend</span><span class="p">;</span>
<span class="p">};</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>Grab the standard <code>Object.extend</code> as popularized by Backbone.js.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">ClientBase</span><span class="p">.</span><span class="nx">extend</span> <span class="o">=</span> <span class="nx">Helpers</span><span class="p">.</span><span class="nx">extend</span><span class="p">;</span>
<span class="nx">exports</span><span class="p">.</span><span class="nx">ClientBase</span> <span class="o">=</span> <span class="nx">ClientBase</span><span class="p">;</span>

View File

@ -6,56 +6,65 @@
<span class="kd">var</span> <span class="nx">nodefn</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;when/node/function&#39;</span><span class="p">);</span>
<span class="kd">var</span> <span class="nx">_</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;underscore&#39;</span><span class="p">);</span>
<span class="kd">var</span> <span class="nx">GenericPool</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;generic-pool-redux&#39;</span><span class="p">).</span><span class="nx">Pool</span><span class="p">;</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>The "Pool" object is a thin wrapper around the
<span class="kd">var</span> <span class="nx">GenericPool</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;generic-pool-redux&#39;</span><span class="p">).</span><span class="nx">Pool</span><span class="p">;</span>
<span class="kd">var</span> <span class="nx">Helpers</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;../lib/helpers&#39;</span><span class="p">).</span><span class="nx">Helpers</span><span class="p">;</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>The "Pool" object is a thin wrapper around the
"generic-pool-redux" library, exposing a <code>destroy</code>
method for explicitly draining the pool. The
<code>init</code> method is called internally and initializes
the pool if it doesn't already exist.</p></div></div><div class="code"><div class="wrapper"> <span class="kd">var</span> <span class="nx">Pool</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">config</span><span class="p">,</span> <span class="nx">client</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if</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">this</span><span class="p">.</span><span class="nx">afterCreate</span> <span class="o">=</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="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;create&#39;</span><span class="p">,</span> <span class="s1">&#39;release&#39;</span><span class="p">,</span> <span class="s1">&#39;afterCreate&#39;</span><span class="p">,</span> <span class="s1">&#39;beforeDestroy&#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">_</span><span class="p">.</span><span class="nx">extend</span><span class="p">({},</span> <span class="nx">config</span><span class="p">,</span> <span class="p">{</span>
<span class="nx">create</span><span class="o">:</span> <span class="k">this</span><span class="p">.</span><span class="nx">create</span><span class="p">,</span>
<span class="nx">destroy</span><span class="o">:</span> <span class="k">this</span><span class="p">.</span><span class="nx">beforeDestroy</span>
<span class="p">});</span>
<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">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="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>
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="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="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="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="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="nx">connection</span><span class="p">);</span>
<span class="p">});</span>
<span class="p">}</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="nx">connection</span><span class="p">);</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>Typically only called internally, this initializes
a new <code>GenericPool</code> instance, based on the <code>config</code>
options passed into the constructor.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">init</span><span class="o">:</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="k">this</span><span class="p">.</span><span class="nx">instance</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">instance</span> <span class="o">||</span> <span class="k">new</span> <span class="nx">GenericPool</span><span class="p">(</span><span class="nx">_</span><span class="p">.</span><span class="nx">defaults</span><span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">config</span><span class="p">,</span> <span class="k">this</span><span class="p">.</span><span class="nx">defaults</span><span class="p">));</span>
<span class="k">return</span> <span class="k">this</span><span class="p">.</span><span class="nx">instance</span><span class="p">;</span>
<span class="p">},</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>Extend these if you want to have some action taking place just after
the connection is created, or just before the connection is destroyed.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">afterCreate</span><span class="o">:</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{},</span>
<span class="nx">beforeDestroy</span><span class="o">:</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{},</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>Create a new connection on the pool.</p></div></div><div class="code"><div class="wrapper"> <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="k">this</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="p">})</span>
<span class="p">.</span><span class="nx">tap</span><span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">afterCreate</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">acquire</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="nx">priority</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">instance</span> <span class="o">||</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="nx">acquire</span><span class="p">(</span><span class="nx">callback</span><span class="p">,</span> <span class="nx">priority</span><span class="p">);</span>
options passed into the constructor.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">init</span><span class="o">:</span> <span class="kd">function</span><span class="p">(</span><span class="nx">config</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">config</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">_</span><span class="p">.</span><span class="nx">extend</span><span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">config</span><span class="p">,</span> <span class="nx">config</span><span class="p">);</span>
<span class="k">this</span><span class="p">.</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="o">||</span> <span class="k">new</span> <span class="nx">GenericPool</span><span class="p">(</span><span class="nx">_</span><span class="p">.</span><span class="nx">defaults</span><span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">config</span><span class="p">,</span> <span class="nx">_</span><span class="p">.</span><span class="nx">result</span><span class="p">(</span><span class="k">this</span><span class="p">,</span> <span class="s1">&#39;defaults&#39;</span><span class="p">)));</span>
<span class="k">return</span> <span class="k">this</span><span class="p">.</span><span class="nx">poolInstance</span><span class="p">;</span>
<span class="p">},</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>Acquires a connection from the pool.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">acquire</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="nx">priority</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">poolInstance</span> <span class="o">||</span> <span class="k">this</span><span class="p">.</span><span class="nx">init</span><span class="p">()).</span><span class="nx">acquire</span><span class="p">(</span><span class="nx">callback</span><span class="p">,</span> <span class="nx">priority</span><span class="p">);</span>
<span class="p">},</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>Release a connection back to the connection pool.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">release</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="nx">callback</span><span class="p">)</span> <span class="p">{</span>
<span class="k">this</span><span class="p">.</span><span class="nx">instance</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="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="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">instance</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="p">});</span>
<span class="k">delete</span> <span class="k">this</span><span class="p">.</span><span class="nx">instance</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">return</span> <span class="k">this</span><span class="p">;</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>Grab the standard <code>Object.extend</code> as popularized by Backbone.js.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">Pool</span><span class="p">.</span><span class="nx">extend</span> <span class="o">=</span> <span class="nx">Helpers</span><span class="p">.</span><span class="nx">extend</span><span class="p">;</span>
<span class="nx">exports</span><span class="p">.</span><span class="nx">Pool</span> <span class="o">=</span> <span class="nx">Pool</span><span class="p">;</span>

View File

@ -1,4 +1,4 @@
<!DOCTYPE html><html lang="en"><head><title>clients/server/base</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="clients/server/base"><meta name="groc-project-path" content="clients/server/base.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">clients/server/base.js</div></div><div id="document"><div class="segment"><div class="comments"><div class="wrapper"><h2 id="serverbase">ServerBase</h2></div></div></div><div class="segment"><div class="code"><div class="wrapper"><span class="kd">var</span> <span class="nx">when</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;when&#39;</span><span class="p">);</span>
<!DOCTYPE html><html lang="en"><head><title>clients/server/base</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="clients/server/base"><meta name="groc-project-path" content="clients/server/base.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">clients/server/base.js</div></div><div id="document"><div class="segment"><div class="comments"><div class="wrapper"><h2 id="serverbase">ServerBase</h2></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>All of the "when.js" promise components needed in this module.</p></div></div><div class="code"><div class="wrapper"><span class="kd">var</span> <span class="nx">when</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;when&#39;</span><span class="p">);</span>
<span class="kd">var</span> <span class="nx">nodefn</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;when/node/function&#39;</span><span class="p">);</span>
<span class="kd">var</span> <span class="nx">sequence</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;when/sequence&#39;</span><span class="p">);</span>
@ -12,11 +12,8 @@ which then initializes the pool and</p></div></div><div class="code"><div class=
<span class="k">if</span> <span class="p">(</span><span class="nx">config</span><span class="p">.</span><span class="nx">debug</span><span class="p">)</span> <span class="k">this</span><span class="p">.</span><span class="nx">isDebugging</span> <span class="o">=</span> <span class="kc">true</span><span class="p">;</span>
<span class="k">this</span><span class="p">.</span><span class="nx">connectionSettings</span> <span class="o">=</span> <span class="nx">config</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">initPool</span><span class="p">(</span><span class="nx">config</span><span class="p">.</span><span class="nx">pool</span><span class="p">);</span>
<span class="k">this</span><span class="p">.</span><span class="nx">initialize</span><span class="p">(</span><span class="nx">config</span><span class="p">);</span>
<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;getRawConnection&#39;</span><span class="p">);</span>
<span class="p">},</span>
<span class="nx">initialize</span><span class="o">:</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{},</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>Initialize a pool with the apporpriate configuration and
<span class="p">},</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>Initialize a pool with the apporpriate configuration and
bind the pool to the current client object.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">initPool</span><span class="o">:</span> <span class="kd">function</span><span class="p">(</span><span class="nx">poolConfig</span><span class="p">)</span> <span class="p">{</span>
<span class="k">this</span><span class="p">.</span><span class="nx">pool</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">Pool</span><span class="p">(</span><span class="nx">_</span><span class="p">.</span><span class="nx">extend</span><span class="p">({},</span> <span class="nx">poolConfig</span><span class="p">,</span> <span class="nx">_</span><span class="p">.</span><span class="nx">result</span><span class="p">(</span><span class="k">this</span><span class="p">,</span> <span class="s1">&#39;poolDefaults&#39;</span><span class="p">)),</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>Execute a query on the specified Builder or QueryBuilder
@ -24,14 +21,12 @@ interface. If a <code>connection</code> is specified, use it, otherwise
acquire a connection, and then dispose of it when we're done.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">query</span><span class="o">:</span> <span class="kd">function</span><span class="p">(</span><span class="nx">builder</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">conn</span><span class="p">,</span> <span class="nx">client</span> <span class="o">=</span> <span class="k">this</span><span class="p">;</span>
<span class="kd">var</span> <span class="nx">sql</span> <span class="o">=</span> <span class="nx">builder</span><span class="p">.</span><span class="nx">toSql</span><span class="p">(</span><span class="nx">builder</span><span class="p">);</span>
<span class="kd">var</span> <span class="nx">bindings</span> <span class="o">=</span> <span class="nx">builder</span><span class="p">.</span><span class="nx">cleanBindings</span><span class="p">();</span>
<span class="kd">var</span> <span class="nx">bindings</span> <span class="o">=</span> <span class="nx">builder</span><span class="p">.</span><span class="nx">getBindings</span><span class="p">();</span>
<span class="kd">var</span> <span class="nx">chain</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">getConnection</span><span class="p">(</span><span class="nx">builder</span><span class="p">).</span><span class="nx">then</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="k">if</span> <span class="p">(</span><span class="nx">client</span><span class="p">.</span><span class="nx">isDebugging</span> <span class="o">||</span> <span class="nx">builder</span><span class="p">.</span><span class="nx">isDebugging</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">client</span><span class="p">.</span><span class="nx">debug</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="nx">connection</span><span class="p">,</span> <span class="nx">builder</span><span class="p">);</span>
<span class="p">}</span>
<span class="nx">conn</span> <span class="o">=</span> <span class="nx">connection</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">isArray</span><span class="p">(</span><span class="nx">sql</span><span class="p">))</span> <span class="p">{</span>
<span class="k">return</span> <span class="nx">sequence</span><span class="p">(</span><span class="nx">sql</span><span class="p">.</span><span class="nx">map</span><span class="p">(</span><span class="kd">function</span><span class="p">(</span><span class="nx">query</span><span class="p">,</span> <span class="nx">i</span><span class="p">)</span> <span class="p">{</span>

View File

@ -1,6 +1,5 @@
<!DOCTYPE html><html lang="en"><head><title>clients/server/mysql</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="clients/server/mysql"><meta name="groc-project-path" content="clients/server/mysql.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">clients/server/mysql.js</div></div><div id="document"><div class="segment"><div class="comments"><div class="wrapper"><h2 id="mysql">MySQL</h2></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>All of the "when.js" promise components needed in this module.</p></div></div><div class="code"><div class="wrapper"><span class="kd">var</span> <span class="nx">when</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;when&#39;</span><span class="p">);</span>
<span class="kd">var</span> <span class="nx">nodefn</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;when/node/function&#39;</span><span class="p">);</span>
<span class="kd">var</span> <span class="nx">sequence</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;when/sequence&#39;</span><span class="p">);</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>Other dependencies, including the <code>mysql</code> library,
<span class="kd">var</span> <span class="nx">nodefn</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;when/node/function&#39;</span><span class="p">);</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>Other dependencies, including the <code>mysql</code> library,
which needs to be added as a dependency to the project
using this database.</p></div></div><div class="code"><div class="wrapper"><span class="kd">var</span> <span class="nx">_</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;underscore&#39;</span><span class="p">);</span>
<span class="kd">var</span> <span class="nx">mysql</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;mysql&#39;</span><span class="p">);</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>All other local project modules needed in this scope.</p></div></div><div class="code"><div class="wrapper"><span class="kd">var</span> <span class="nx">ServerBase</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;./base&#39;</span><span class="p">).</span><span class="nx">ServerBase</span><span class="p">;</span>
@ -23,6 +22,9 @@ using this database.</p></div></div><div class="code"><div class="wrapper"><span
connection needs to be added to the pool.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">getRawConnection</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">connection</span> <span class="o">=</span> <span class="nx">mysql</span><span class="p">.</span><span class="nx">createConnection</span><span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">connectionSettings</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">connection</span><span class="p">.</span><span class="nx">connect</span><span class="p">.</span><span class="nx">bind</span><span class="p">(</span><span class="nx">connection</span><span class="p">)).</span><span class="nx">yield</span><span class="p">(</span><span class="nx">connection</span><span class="p">);</span>
<span class="p">},</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>Used to explicitly close a connection, called internally by the pool
when a connection times out or the pool is shutdown.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">destroyRawConnection</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="nx">connection</span><span class="p">.</span><span class="nx">end</span><span class="p">();</span>
<span class="p">},</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>Used to check if there is a conditional query needed to complete the next one.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">advancedQuery</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="nx">sql</span><span class="p">,</span> <span class="nx">bindings</span><span class="p">,</span> <span class="nx">builder</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">sql</span><span class="p">.</span><span class="nx">indexOf</span><span class="p">(</span><span class="s1">&#39;alter table&#39;</span><span class="p">)</span> <span class="o">===</span> <span class="mi">0</span> <span class="o">&amp;&amp;</span> <span class="nx">sql</span><span class="p">.</span><span class="nx">indexOf</span><span class="p">(</span><span class="s1">&#39;__datatype__&#39;</span><span class="p">)</span> <span class="o">===</span> <span class="p">(</span><span class="nx">sql</span><span class="p">.</span><span class="nx">length</span> <span class="o">-</span> <span class="mi">12</span><span class="p">))</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">newSql</span> <span class="o">=</span> <span class="nx">sql</span><span class="p">.</span><span class="nx">replace</span><span class="p">(</span><span class="s1">&#39;alter table&#39;</span><span class="p">,</span> <span class="s1">&#39;show fields from&#39;</span><span class="p">).</span><span class="nx">split</span><span class="p">(</span><span class="s1">&#39;change&#39;</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span> <span class="o">+</span> <span class="s1">&#39; where field = ?&#39;</span><span class="p">;</span>

View File

@ -9,8 +9,6 @@ using this database.</p></div></div><div class="code"><div class="wrapper"><span
<span class="nx">dialect</span><span class="o">:</span> <span class="s1">&#39;postgresql&#39;</span><span class="p">,</span>
<span class="nx">initialize</span><span class="o">:</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{},</span>
<span class="nx">runQuery</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="nx">sql</span><span class="p">,</span> <span class="nx">bindings</span><span class="p">,</span> <span class="nx">builder</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">connection</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;No database connection exists for the query&#39;</span><span class="p">);</span>
<span class="kd">var</span> <span class="nx">questionCount</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
@ -27,6 +25,9 @@ connection needs to be added to the pool.</p></div></div><div class="code"><div
<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">connection</span><span class="p">.</span><span class="nx">connect</span><span class="p">.</span><span class="nx">bind</span><span class="p">(</span><span class="nx">connection</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="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">instance</span><span class="p">.</span><span class="nx">version</span><span class="p">)</span> <span class="k">return</span> <span class="nx">instance</span><span class="p">.</span><span class="nx">checkVersion</span><span class="p">(</span><span class="nx">connection</span><span class="p">);</span>
<span class="p">}).</span><span class="nx">yield</span><span class="p">(</span><span class="nx">connection</span><span class="p">);</span>
<span class="p">},</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>Used to explicitly close a connection, called internally by the pool
when a connection times out or the pool is shutdown.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">destroyRawConnection</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="nx">connection</span><span class="p">.</span><span class="nx">end</span><span class="p">();</span>
<span class="p">},</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>In PostgreSQL, we need to do a version check to do some feature
checking on the database.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">checkVersion</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="kd">var</span> <span class="nx">instance</span> <span class="o">=</span> <span class="k">this</span><span class="p">;</span>

View File

@ -1,18 +1,16 @@
<!DOCTYPE html><html lang="en"><head><title>clients/server/sqlite3</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="clients/server/sqlite3"><meta name="groc-project-path" content="clients/server/sqlite3.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">clients/server/sqlite3.js</div></div><div id="document"><div class="segment"><div class="comments"><div class="wrapper"><h2 id="sqlite3">SQLite3</h2></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>All of the "when.js" promise components needed in this module.</p></div></div><div class="code"><div class="wrapper"><span class="kd">var</span> <span class="nx">when</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;when&#39;</span><span class="p">);</span>
<span class="kd">var</span> <span class="nx">nodefn</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;when/node/function&#39;</span><span class="p">);</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>Other dependencies, including the <code>sqlite3</code> library,
<!DOCTYPE html><html lang="en"><head><title>clients/server/sqlite3</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="clients/server/sqlite3"><meta name="groc-project-path" content="clients/server/sqlite3.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">clients/server/sqlite3.js</div></div><div id="document"><div class="segment"><div class="comments"><div class="wrapper"><h2 id="sqlite3">SQLite3</h2></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>All of the "when.js" promise components needed in this module.</p></div></div><div class="code"><div class="wrapper"><span class="kd">var</span> <span class="nx">when</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;when&#39;</span><span class="p">);</span>
<span class="kd">var</span> <span class="nx">nodefn</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;when/node/function&#39;</span><span class="p">);</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>Other dependencies, including the <code>sqlite3</code> library,
which needs to be added as a dependency to the project
using this database.</p></div></div><div class="code"><div class="wrapper"><span class="kd">var</span> <span class="nx">_</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;underscore&#39;</span><span class="p">);</span>
<span class="kd">var</span> <span class="nx">sqlite3</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;sqlite3&#39;</span><span class="p">);</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>All other local project modules needed in this scope.</p></div></div><div class="code"><div class="wrapper"><span class="kd">var</span> <span class="nx">SQLite3Base</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;../base/sqlite3&#39;</span><span class="p">);</span>
using this database.</p></div></div><div class="code"><div class="wrapper"><span class="kd">var</span> <span class="nx">_</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;underscore&#39;</span><span class="p">);</span>
<span class="kd">var</span> <span class="nx">sqlite3</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;sqlite3&#39;</span><span class="p">);</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>All other local project modules needed in this scope.</p></div></div><div class="code"><div class="wrapper"><span class="kd">var</span> <span class="nx">SQLite3Base</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;../base/sqlite3&#39;</span><span class="p">);</span>
<span class="kd">var</span> <span class="nx">ServerBase</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;./base&#39;</span><span class="p">).</span><span class="nx">ServerBase</span><span class="p">;</span>
<span class="kd">var</span> <span class="nx">Builder</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;../../lib/builder&#39;</span><span class="p">).</span><span class="nx">Builder</span><span class="p">;</span>
<span class="kd">var</span> <span class="nx">Transaction</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;../../lib/transaction&#39;</span><span class="p">).</span><span class="nx">Transaction</span><span class="p">;</span>
<span class="kd">var</span> <span class="nx">SchemaInterface</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;../../lib/schemainterface&#39;</span><span class="p">).</span><span class="nx">SchemaInterface</span><span class="p">;</span>
<span class="kd">var</span> <span class="nx">Helpers</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;../../lib/helpers&#39;</span><span class="p">).</span><span class="nx">Helpers</span><span class="p">;</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>Constructor for the SQLite3Client.</p></div></div><div class="code"><div class="wrapper"><span class="kd">var</span> <span class="nx">SQLite3Client</span> <span class="o">=</span> <span class="nx">exports</span><span class="p">.</span><span class="nx">Client</span> <span class="o">=</span> <span class="nx">ServerBase</span><span class="p">.</span><span class="nx">extend</span><span class="p">({</span>
<span class="kd">var</span> <span class="nx">Helpers</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;../../lib/helpers&#39;</span><span class="p">).</span><span class="nx">Helpers</span><span class="p">;</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>Constructor for the SQLite3Client.</p></div></div><div class="code"><div class="wrapper"><span class="kd">var</span> <span class="nx">SQLite3Client</span> <span class="o">=</span> <span class="nx">exports</span><span class="p">.</span><span class="nx">Client</span> <span class="o">=</span> <span class="nx">ServerBase</span><span class="p">.</span><span class="nx">extend</span><span class="p">({</span>
<span class="nx">dialect</span><span class="o">:</span> <span class="s1">&#39;sqlite3&#39;</span><span class="p">,</span>
<span class="nx">initialize</span><span class="o">:</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{},</span>
<span class="nx">runQuery</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="nx">sql</span><span class="p">,</span> <span class="nx">bindings</span><span class="p">,</span> <span class="nx">builder</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">connection</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;No database connection exists for the query&#39;</span><span class="p">);</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">sql</span> <span class="o">===</span> <span class="s1">&#39;__rename_column__&#39;</span><span class="p">)</span> <span class="p">{</span>
@ -50,6 +48,9 @@ using this database.</p></div></div><div class="code"><div class="wrapper"><span
<span class="nx">dfd</span><span class="p">.</span><span class="nx">resolve</span><span class="p">(</span><span class="nx">db</span><span class="p">);</span>
<span class="p">});</span>
<span class="k">return</span> <span class="nx">dfd</span><span class="p">.</span><span class="nx">promise</span><span class="p">;</span>
<span class="p">},</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>Used to explicitly close a connection, called internally by the pool
when a connection times out or the pool is shutdown.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">destroyRawConnection</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="nx">connection</span><span class="p">.</span><span class="nx">close</span><span class="p">();</span>
<span class="p">},</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>Begins a transaction statement on the instance,
resolving with the connection of the current transaction.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">startTransaction</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">return</span> <span class="k">this</span><span class="p">.</span><span class="nx">getConnection</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>

View File

@ -1,4 +1,4 @@
<!DOCTYPE html><html lang="en"><head><title>clients/web/cordova</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="clients/web/cordova"><meta name="groc-project-path" content="clients/web/cordova.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">clients/web/cordova.js</div></div><div id="document"><div class="segment"><div class="code"><div class="wrapper"><span class="p">(</span><span class="kd">function</span><span class="p">(</span><span class="nx">define</span><span class="p">)</span> <span class="p">{</span>
<!DOCTYPE html><html lang="en"><head><title>clients/web/cordova</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="clients/web/cordova"><meta name="groc-project-path" content="clients/web/cordova.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">clients/web/cordova.js</div></div><div id="document"><div class="segment"><div class="comments"><div class="wrapper"><h2 id="sqlite3-cordova-phonegap">SQLite3 - Cordova (PhoneGap)</h2></div></div></div><div class="segment"><div class="code"><div class="wrapper"><span class="p">(</span><span class="kd">function</span><span class="p">(</span><span class="nx">define</span><span class="p">)</span> <span class="p">{</span>
<span class="s2">&quot;use strict&quot;</span><span class="p">;</span>

View File

@ -1,4 +1,4 @@
<!DOCTYPE html><html lang="en"><head><title>clients/web/websql</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="clients/web/websql"><meta name="groc-project-path" content="clients/web/websql.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">clients/web/websql.js</div></div><div id="document"><div class="segment"><div class="code"><div class="wrapper"><span class="p">(</span><span class="kd">function</span><span class="p">(</span><span class="nx">define</span><span class="p">)</span> <span class="p">{</span>
<!DOCTYPE html><html lang="en"><head><title>clients/web/websql</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="clients/web/websql"><meta name="groc-project-path" content="clients/web/websql.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">clients/web/websql.js</div></div><div id="document"><div class="segment"><div class="comments"><div class="wrapper"><h2 id="sqlite3-websql">SQLite3 - WebSQL</h2></div></div></div><div class="segment"><div class="code"><div class="wrapper"><span class="p">(</span><span class="kd">function</span><span class="p">(</span><span class="nx">define</span><span class="p">)</span> <span class="p">{</span>
<span class="s2">&quot;use strict&quot;</span><span class="p">;</span>

View File

@ -1,6 +1,8 @@
<!DOCTYPE html><html lang="en"><head><title>lib/builder/joinclause</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/builder/joinclause"><meta name="groc-project-path" content="lib/builder/joinclause.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/builder/joinclause.js</div></div><div id="document"><div class="segment"><div class="code"><div class="wrapper"><span class="p">(</span><span class="kd">function</span><span class="p">(</span><span class="nx">define</span><span class="p">)</span> <span class="p">{</span>
<!DOCTYPE html><html lang="en"><head><title>lib/builder/joinclause</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/builder/joinclause"><meta name="groc-project-path" content="lib/builder/joinclause.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/builder/joinclause.js</div></div><div id="document"><div class="segment"><div class="comments"><div class="wrapper"><h2 id="joinclause">JoinClause</h2></div></div></div><div class="segment"><div class="code"><div class="wrapper"><span class="p">(</span><span class="kd">function</span><span class="p">(</span><span class="nx">define</span><span class="p">)</span> <span class="p">{</span>
<span class="s2">&quot;use strict&quot;</span><span class="p">;</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><h2 id="joinclause">JoinClause</h2></div></div></div><div class="segment"><div class="code"><div class="wrapper"><span class="nx">define</span><span class="p">(</span><span class="kd">function</span><span class="p">(</span><span class="nx">require</span><span class="p">,</span> <span class="nx">exports</span><span class="p">)</span> <span class="p">{</span>
<span class="s2">&quot;use strict&quot;</span><span class="p">;</span>
<span class="nx">define</span><span class="p">(</span><span class="kd">function</span><span class="p">(</span><span class="nx">require</span><span class="p">,</span> <span class="nx">exports</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">JoinClause</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">type</span><span class="p">,</span> <span class="nx">table</span><span class="p">)</span> <span class="p">{</span>
<span class="k">this</span><span class="p">.</span><span class="nx">joinType</span> <span class="o">=</span> <span class="nx">type</span><span class="p">;</span>

View File

@ -42,7 +42,7 @@ after the last block.</p></div></div><div class="code"><div class="wrapper">
correct values based on bindings, etc. Useful for debugging.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">toString</span><span class="o">:</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>TODO: get rid of the need to clone the object here...</p></div></div><div class="code"><div class="wrapper"> <span class="kd">var</span> <span class="nx">builder</span> <span class="o">=</span> <span class="k">this</span><span class="p">,</span> <span class="nx">data</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">clone</span><span class="p">().</span><span class="nx">toSql</span><span class="p">();</span>
<span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">_</span><span class="p">.</span><span class="nx">isArray</span><span class="p">(</span><span class="nx">data</span><span class="p">))</span> <span class="nx">data</span> <span class="o">=</span> <span class="p">[</span><span class="nx">data</span><span class="p">];</span>
<span class="k">return</span> <span class="nx">_</span><span class="p">.</span><span class="nx">map</span><span class="p">(</span><span class="nx">data</span><span class="p">,</span> <span class="kd">function</span><span class="p">(</span><span class="nx">str</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="nx">SqlString</span><span class="p">.</span><span class="nx">format</span><span class="p">(</span><span class="nx">str</span><span class="p">,</span> <span class="nx">builder</span><span class="p">.</span><span class="nx">cleanBindings</span><span class="p">());</span>
<span class="k">return</span> <span class="nx">SqlString</span><span class="p">.</span><span class="nx">format</span><span class="p">(</span><span class="nx">str</span><span class="p">,</span> <span class="nx">builder</span><span class="p">.</span><span class="nx">getBindings</span><span class="p">());</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>Converts the current statement to a sql string</p></div></div><div class="code"><div class="wrapper"> <span class="nx">toSql</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="k">this</span><span class="p">.</span><span class="nx">grammar</span><span class="p">.</span><span class="nx">toSql</span><span class="p">(</span><span class="k">this</span><span class="p">);</span>
@ -63,7 +63,7 @@ and have it come out fine.</p></div></div><div class="code"><div class="wrapper"
<span class="p">}</span>
<span class="k">this</span><span class="p">.</span><span class="nx">type</span> <span class="o">=</span> <span class="nx">type</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>Returns all bindings excluding the <code>Knex.Raw</code> types.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">cleanBindings</span><span class="o">:</span> <span class="kd">function</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>Returns all bindings excluding the <code>Knex.Raw</code> types.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">getBindings</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">bindings</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">bindings</span><span class="p">;</span>
<span class="kd">var</span> <span class="nx">cleaned</span> <span class="o">=</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">bindings</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></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>if (bindings[i] == void 0) continue;</p></div></div><div class="code"><div class="wrapper"> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">bindings</span><span class="p">[</span><span class="nx">i</span><span class="p">]</span> <span class="o">||</span> <span class="nx">bindings</span><span class="p">[</span><span class="nx">i</span><span class="p">].</span><span class="nx">_source</span> <span class="o">!==</span> <span class="s1">&#39;Raw&#39;</span><span class="p">)</span> <span class="p">{</span>

View File

@ -1,4 +1,4 @@
<!DOCTYPE html><html lang="en"><head><title>lib/migrate</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/migrate"><meta name="groc-project-path" content="lib/migrate.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/migrate.js</div></div><div id="document"><div class="segment"><div class="code"><div class="wrapper"><span class="kd">var</span> <span class="nx">fs</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;fs&#39;</span><span class="p">);</span>
<!DOCTYPE html><html lang="en"><head><title>lib/migrate</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/migrate"><meta name="groc-project-path" content="lib/migrate.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/migrate.js</div></div><div id="document"><div class="segment"><div class="comments"><div class="wrapper"><h2 id="migrate-wip">Migrate (WIP)</h2></div></div></div><div class="segment"><div class="code"><div class="wrapper"><span class="kd">var</span> <span class="nx">fs</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;fs&#39;</span><span class="p">);</span>
<span class="kd">var</span> <span class="nx">path</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;path&#39;</span><span class="p">);</span>
<span class="kd">var</span> <span class="nx">_</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;underscore&#39;</span><span class="p">);</span>

View File

@ -1,4 +1,4 @@
<!DOCTYPE html><html lang="en"><head><title>lib/raw</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/raw"><meta name="groc-project-path" content="lib/raw.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/raw.js</div></div><div id="document"><div class="segment"><div class="code"><div class="wrapper"><span class="p">(</span><span class="kd">function</span><span class="p">(</span><span class="nx">define</span><span class="p">)</span> <span class="p">{</span>
<!DOCTYPE html><html lang="en"><head><title>lib/raw</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/raw"><meta name="groc-project-path" content="lib/raw.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/raw.js</div></div><div id="document"><div class="segment"><div class="comments"><div class="wrapper"><h2 id="raw">Raw</h2></div></div></div><div class="segment"><div class="code"><div class="wrapper"><span class="p">(</span><span class="kd">function</span><span class="p">(</span><span class="nx">define</span><span class="p">)</span> <span class="p">{</span>
<span class="s2">&quot;use strict&quot;</span><span class="p">;</span>

View File

@ -1,4 +1,4 @@
<!DOCTYPE html><html lang="en"><head><title>lib/schemabuilder</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/schemabuilder"><meta name="groc-project-path" content="lib/schemabuilder.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/schemabuilder.js</div></div><div id="document"><div class="segment"><div class="code"><div class="wrapper"><span class="p">(</span><span class="kd">function</span><span class="p">(</span><span class="nx">define</span><span class="p">)</span> <span class="p">{</span>
<!DOCTYPE html><html lang="en"><head><title>lib/schemabuilder</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/schemabuilder"><meta name="groc-project-path" content="lib/schemabuilder.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/schemabuilder.js</div></div><div id="document"><div class="segment"><div class="comments"><div class="wrapper"><h2 id="schema-builder">Schema Builder</h2></div></div></div><div class="segment"><div class="code"><div class="wrapper"><span class="p">(</span><span class="kd">function</span><span class="p">(</span><span class="nx">define</span><span class="p">)</span> <span class="p">{</span>
<span class="s2">&quot;use strict&quot;</span><span class="p">;</span>

View File

@ -1,4 +1,4 @@
<!DOCTYPE html><html lang="en"><head><title>lib/schemainterface</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/schemainterface"><meta name="groc-project-path" content="lib/schemainterface.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/schemainterface.js</div></div><div id="document"><div class="segment"><div class="code"><div class="wrapper"><span class="p">(</span><span class="kd">function</span><span class="p">(</span><span class="nx">define</span><span class="p">)</span> <span class="p">{</span>
<!DOCTYPE html><html lang="en"><head><title>lib/schemainterface</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/schemainterface"><meta name="groc-project-path" content="lib/schemainterface.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/schemainterface.js</div></div><div id="document"><div class="segment"><div class="comments"><div class="wrapper"><h2 id="schema-interface">Schema Interface</h2></div></div></div><div class="segment"><div class="code"><div class="wrapper"><span class="p">(</span><span class="kd">function</span><span class="p">(</span><span class="nx">define</span><span class="p">)</span> <span class="p">{</span>
<span class="s2">&quot;use strict&quot;</span><span class="p">;</span>

View File

@ -1,4 +1,4 @@
<!DOCTYPE html><html lang="en"><head><title>lib/transaction</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/transaction"><meta name="groc-project-path" content="lib/transaction.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/transaction.js</div></div><div id="document"><div class="segment"><div class="code"><div class="wrapper"><span class="p">(</span><span class="kd">function</span><span class="p">(</span><span class="nx">define</span><span class="p">)</span> <span class="p">{</span>
<!DOCTYPE html><html lang="en"><head><title>lib/transaction</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/transaction"><meta name="groc-project-path" content="lib/transaction.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/transaction.js</div></div><div id="document"><div class="segment"><div class="comments"><div class="wrapper"><h2 id="transaction">Transaction</h2></div></div></div><div class="segment"><div class="code"><div class="wrapper"><span class="p">(</span><span class="kd">function</span><span class="p">(</span><span class="nx">define</span><span class="p">)</span> <span class="p">{</span>
<span class="s2">&quot;use strict&quot;</span><span class="p">;</span>

View File

@ -235,6 +235,7 @@
<li> <a href="#Builder-decrement">decrement</a></li>
<li> <a href="#Builder-truncate">truncate</a></li>
<li> <a href="#Builder-debug">debug</a></li>
<li> <a href="#Builder-options">options</a></li>
<li><b><a href="#Builder-Interface">Interface:</a></b></li>
<li> <a href="#Builder-tap">tap</a></li>
<li> <a href="#Builder-then">then</a></li>
@ -875,6 +876,23 @@ knex.transaction(function(t) {
Turns on debugging for the current query chain.
</p>
<p id="Builder-options">
<b class="header">options</b><code>.options()</code>
<br />
Allows for mixing in additional options as defined by database client specific libraries:
</p>
<pre>
knex('accounts as a1')
.join('accounts as a2', function() {
this.on('a1.email', '<>', 'a2.email');
}, 'left')
.select(['a1.email', 'a2.email'])
.where(Knex.Raw('a1.id = 1'))
.option({ nestTables: true, rowMode: 'array' })
.limit(2);
</pre>
<h3 id="Builder-Interface">Builder Interface Methods:</h3>
<p id="Builder-then">
@ -1344,7 +1362,9 @@ knex.raw('select * from users where id = 1').then(function(resp) {
</ul>
Schema: Added <a href="#Schema-hasColumn">hasColumn</a>, <a href="#Schema-renameColumn">renameColumn</a>, <a href="Schema-bigInteger">bigInteger</a>,
<a href="Schema-specificType">specificType</a>.
General: Refactoring the library to support UMD and eventual use on the client.
General: Refactoring the library to support UMD and eventual use on the client. Added <tt>options</tt> method for adding additional
parameters specific to individual database libraries, #64.
Bugfixes: Case insensitive where operators (e.g.) <tt>LIKE, BETWEEN, NOT LIKE</tt> are now supported.
</p>
<p>

View File

@ -1,9 +1,9 @@
// JoinClause
// ---------
(function(define) {
"use strict";
// JoinClause
// ---------
define(function(require, exports) {
var JoinClause = function(type, table) {

View File

@ -1,3 +1,6 @@
// Migrate (WIP)
// -------
var fs = require('fs');
var path = require('path');

View File

@ -1,3 +1,5 @@
// Raw
// -------
(function(define) {
"use strict";

View File

@ -1,3 +1,5 @@
// Schema Builder
// -------
(function(define) {
"use strict";

View File

@ -1,3 +1,5 @@
// Schema Interface
// -------
(function(define) {
"use strict";

View File

@ -1,3 +1,5 @@
// Transaction
// -------
(function(define) {
"use strict";