<spanclass="kd">var</span><spanclass="nx">ServerBase</span><spanclass="o">=</span><spanclass="nx">ClientBase</span><spanclass="p">.</span><spanclass="nx">extend</span><spanclass="p">({</span></div></div></div><divclass="segment"><divclass="comments"><divclass="wrapper"><p>Pass a config object into the constructor,
which then initializes the pool and</p></div></div><divclass="code"><divclass="wrapper"><spanclass="nx">constructor</span><spanclass="o">:</span><spanclass="kd">function</span><spanclass="p">(</span><spanclass="nx">config</span><spanclass="p">)</span><spanclass="p">{</span>
<spanclass="p">},</span></div></div></div><divclass="segment"><divclass="comments"><divclass="wrapper"><p>Initialize a pool with the apporpriate configuration and
bind the pool to the current client object.</p></div></div><divclass="code"><divclass="wrapper"><spanclass="nx">initPool</span><spanclass="o">:</span><spanclass="kd">function</span><spanclass="p">(</span><spanclass="nx">poolConfig</span><spanclass="p">)</span><spanclass="p">{</span>
<spanclass="p">},</span></div></div></div><divclass="segment"><divclass="comments"><divclass="wrapper"><p>Execute a query on the specified Builder or QueryBuilder
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><divclass="code"><divclass="wrapper"><spanclass="nx">query</span><spanclass="o">:</span><spanclass="kd">function</span><spanclass="p">(</span><spanclass="nx">builder</span><spanclass="p">)</span><spanclass="p">{</span>
<spanclass="p">});</span></div></div></div><divclass="segment"><divclass="comments"><divclass="wrapper"><p>If the builder came with a supplied connection, then we won't do
anything to it (most commonly in the case of transactions)... otherwise,
ensure the connection gets dumped back into the client pool.</p></div></div><divclass="code"><divclass="wrapper"><spanclass="k">if</span><spanclass="p">(</span><spanclass="o">!</span><spanclass="nx">builder</span><spanclass="p">.</span><spanclass="nx">usingConnection</span><spanclass="p">)</span><spanclass="p">{</span>
<spanclass="k">if</span><spanclass="p">(</span><spanclass="o">!</span><spanclass="nx">conn</span><spanclass="p">)</span><spanclass="p">{</span></div></div></div><divclass="segment"><divclass="comments"><divclass="wrapper"><p>The connection must have failed to initialize. Avoid pushing undefined
into the connection pool.</p></div></div><divclass="code"><divclass="wrapper"><spanclass="k">return</span><spanclass="p">;</span>
<spanclass="p">}</span></div></div></div><divclass="segment"><divclass="comments"><divclass="wrapper"><p>Since we usually only need the <code>sql</code> and <code>bindings</code> to help us debug the query, output them
into a new error... this way, it <code>console.log</code>'s nicely for debugging, but you can also
parse them out with a <code>JSON.parse(error.message)</code>. Also, use the original <code>clientError</code> from the
database client is retained as a property on the <code>newError</code>, for any additional info.</p></div></div><divclass="code"><divclass="wrapper"><spanclass="k">return</span><spanclass="nx">chain</span><spanclass="p">.</span><spanclass="nx">then</span><spanclass="p">(</span><spanclass="nx">builder</span><spanclass="p">.</span><spanclass="nx">handleResponse</span><spanclass="p">).</span><spanclass="nx">caught</span><spanclass="p">(</span><spanclass="kd">function</span><spanclass="p">(</span><spanclass="nx">error</span><spanclass="p">)</span><spanclass="p">{</span>
<spanclass="p">},</span></div></div></div><divclass="segment"><divclass="comments"><divclass="wrapper"><p>Debug a query.</p></div></div><divclass="code"><divclass="wrapper"><spanclass="nx">debug</span><spanclass="o">:</span><spanclass="kd">function</span><spanclass="p">(</span><spanclass="nx">sql</span><spanclass="p">,</span><spanclass="nx">bindings</span><spanclass="p">,</span><spanclass="nx">connection</span><spanclass="p">,</span><spanclass="nx">builder</span><spanclass="p">)</span><spanclass="p">{</span>
<spanclass="p">},</span></div></div></div><divclass="segment"><divclass="comments"><divclass="wrapper"><p>Retrieves a connection from the connection pool,
returning a promise.</p></div></div><divclass="code"><divclass="wrapper"><spanclass="nx">getConnection</span><spanclass="o">:</span><spanclass="kd">function</span><spanclass="p">(</span><spanclass="nx">builder</span><spanclass="p">)</span><spanclass="p">{</span>
<spanclass="p">},</span></div></div></div><divclass="segment"><divclass="comments"><divclass="wrapper"><p>Releases a connection from the connection pool,
returning a promise.</p></div></div><divclass="code"><divclass="wrapper"><spanclass="nx">releaseConnection</span><spanclass="o">:</span><spanclass="kd">function</span><spanclass="p">(</span><spanclass="nx">conn</span><spanclass="p">)</span><spanclass="p">{</span>
<spanclass="p">},</span></div></div></div><divclass="segment"><divclass="comments"><divclass="wrapper"><p>Begins a transaction statement on the instance,
resolving with the connection of the current transaction.</p></div></div><divclass="code"><divclass="wrapper"><spanclass="nx">startTransaction</span><spanclass="o">:</span><spanclass="kd">function</span><spanclass="p">()</span><spanclass="p">{</span>
<spanclass="p">},</span></div></div></div><divclass="segment"><divclass="comments"><divclass="wrapper"><p>Finishes the transaction statement on the instance.</p></div></div><divclass="code"><divclass="wrapper"><spanclass="nx">finishTransaction</span><spanclass="o">:</span><spanclass="kd">function</span><spanclass="p">(</span><spanclass="nx">type</span><spanclass="p">,</span><spanclass="nx">transaction</span><spanclass="p">,</span><spanclass="nx">msg</span><spanclass="p">)</span><spanclass="p">{</span>