using this database.</p></div></div><divclass="code"><divclass="wrapper"><spanclass="kd">var</span><spanclass="nx">_</span><spanclass="o">=</span><spanclass="nx">require</span><spanclass="p">(</span><spanclass="s1">'lodash'</span><spanclass="p">);</span>
<spanclass="kd">var</span><spanclass="nx">mysql</span><spanclass="o">=</span><spanclass="nx">require</span><spanclass="p">(</span><spanclass="s1">'mysql'</span><spanclass="p">);</span></div></div></div><divclass="segment"><divclass="comments"><divclass="wrapper"><p>All other local project modules needed in this scope.</p></div></div><divclass="code"><divclass="wrapper"><spanclass="kd">var</span><spanclass="nx">ServerBase</span><spanclass="o">=</span><spanclass="nx">require</span><spanclass="p">(</span><spanclass="s1">'./base'</span><spanclass="p">).</span><spanclass="nx">ServerBase</span><spanclass="p">;</span>
<spanclass="kd">var</span><spanclass="nx">schemaGrammar</span><spanclass="o">=</span><spanclass="nx">require</span><spanclass="p">(</span><spanclass="s1">'./mysql/schemagrammar'</span><spanclass="p">).</span><spanclass="nx">schemaGrammar</span><spanclass="p">;</span></div></div></div><divclass="segment"><divclass="comments"><divclass="wrapper"><p>Constructor for the MySQLClient.</p></div></div><divclass="code"><divclass="wrapper"><spanclass="nx">exports</span><spanclass="p">.</span><spanclass="nx">Client</span><spanclass="o">=</span><spanclass="nx">ServerBase</span><spanclass="p">.</span><spanclass="nx">extend</span><spanclass="p">({</span>
<spanclass="nx">dialect</span><spanclass="o">:</span><spanclass="s1">'mysql'</span><spanclass="p">,</span></div></div></div><divclass="segment"><divclass="comments"><divclass="wrapper"><p>Attach the appropriate grammar definitions onto the current client.</p></div></div><divclass="code"><divclass="wrapper"><spanclass="nx">attachGrammars</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>Runs the query on the specified connection, providing the bindings
and any other necessary prep work.</p></div></div><divclass="code"><divclass="wrapper"><spanclass="nx">runQuery</span><spanclass="o">:</span><spanclass="kd">function</span><spanclass="p">(</span><spanclass="nx">connection</span><spanclass="p">,</span><spanclass="nx">sql</span><spanclass="p">,</span><spanclass="nx">bindings</span><spanclass="p">,</span><spanclass="nx">builder</span><spanclass="p">)</span><spanclass="p">{</span>
<spanclass="k">if</span><spanclass="p">(</span><spanclass="o">!</span><spanclass="nx">connection</span><spanclass="p">)</span><spanclass="k">throw</span><spanclass="k">new</span><spanclass="nb">Error</span><spanclass="p">(</span><spanclass="s1">'No database connection exists for the query'</span><spanclass="p">);</span>
<spanclass="p">},</span></div></div></div><divclass="segment"><divclass="comments"><divclass="wrapper"><p>Get a raw connection, called by the <code>pool</code> whenever a new
connection needs to be added to the pool.</p></div></div><divclass="code"><divclass="wrapper"><spanclass="nx">getRawConnection</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>Used to explicitly close a connection, called internally by the pool
when a connection times out or the pool is shutdown.</p></div></div><divclass="code"><divclass="wrapper"><spanclass="nx">destroyRawConnection</span><spanclass="o">:</span><spanclass="kd">function</span><spanclass="p">(</span><spanclass="nx">connection</span><spanclass="p">)</span><spanclass="p">{</span>
<spanclass="p">},</span></div></div></div><divclass="segment"><divclass="comments"><divclass="wrapper"><p>Used to check if there is a conditional query needed to complete the next one.</p></div></div><divclass="code"><divclass="wrapper"><spanclass="nx">advancedQuery</span><spanclass="o">:</span><spanclass="kd">function</span><spanclass="p">(</span><spanclass="nx">connection</span><spanclass="p">,</span><spanclass="nx">sql</span><spanclass="p">,</span><spanclass="nx">builder</span><spanclass="p">)</span><spanclass="p">{</span>
<spanclass="kd">var</span><spanclass="nx">newSql</span><spanclass="o">=</span><spanclass="nx">sql</span><spanclass="p">.</span><spanclass="nx">replace</span><spanclass="p">(</span><spanclass="s1">'alter table'</span><spanclass="p">,</span><spanclass="s1">'show fields from'</span><spanclass="p">).</span><spanclass="nx">split</span><spanclass="p">(</span><spanclass="s1">'change'</span><spanclass="p">)[</span><spanclass="mi">0</span><spanclass="p">]</span><spanclass="o">+</span><spanclass="s1">' where field = ?'</span><spanclass="p">;</span>
<spanclass="kd">var</span><spanclass="nx">column</span><spanclass="o">=</span><spanclass="nx">resp</span><spanclass="p">[</span><spanclass="mi">0</span><spanclass="p">];</span></div></div></div><divclass="segment"><divclass="comments"><divclass="wrapper"><p>Set to the datatype we're looking to change it to...</p></div></div><divclass="code"><divclass="wrapper"><spanclass="k">return</span><spanclass="nx">sql</span><spanclass="p">.</span><spanclass="nx">replace</span><spanclass="p">(</span><spanclass="s1">'__datatype__'</span><spanclass="p">,</span><spanclass="nx">column</span><spanclass="p">[</span><spanclass="mi">0</span><spanclass="p">].</span><spanclass="nx">Type</span><spanclass="p">);</span>