knex/docs/clients/server/sqlite3.html
2013-11-25 02:06:42 -05:00

119 lines
29 KiB
HTML

<!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>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;lodash&#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">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>
<span class="kd">var</span> <span class="nx">Promise</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;../../lib/promise&#39;</span><span class="p">).</span><span class="nx">Promise</span><span class="p">;</span>
<span class="kd">var</span> <span class="nx">grammar</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;./sqlite3/grammar&#39;</span><span class="p">).</span><span class="nx">grammar</span><span class="p">;</span>
<span class="kd">var</span> <span class="nx">schemaGrammar</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;./sqlite3/schemagrammar&#39;</span><span class="p">).</span><span class="nx">schemaGrammar</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></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>Attach the appropriate grammar definitions onto the current client.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">attachGrammars</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">grammar</span> <span class="o">=</span> <span class="nx">grammar</span><span class="p">;</span>
<span class="k">this</span><span class="p">.</span><span class="nx">schemaGrammar</span> <span class="o">=</span> <span class="nx">schemaGrammar</span><span class="p">;</span>
<span class="p">},</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>Runs the query on the specified connection, providing the bindings
and any other necessary prep work.</p></div></div><div class="code"><div class="wrapper"> <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>
<span class="k">return</span> <span class="k">this</span><span class="p">.</span><span class="nx">ddl</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="kd">var</span> <span class="nx">method</span> <span class="o">=</span> <span class="p">(</span><span class="nx">builder</span><span class="p">.</span><span class="nx">type</span> <span class="o">===</span> <span class="s1">&#39;insert&#39;</span> <span class="o">||</span>
<span class="nx">builder</span><span class="p">.</span><span class="nx">type</span> <span class="o">===</span> <span class="s1">&#39;update&#39;</span> <span class="o">||</span> <span class="nx">builder</span><span class="p">.</span><span class="nx">type</span> <span class="o">===</span> <span class="s1">&#39;delete&#39;</span><span class="p">)</span> <span class="o">?</span> <span class="s1">&#39;run&#39;</span> <span class="o">:</span> <span class="s1">&#39;all&#39;</span><span class="p">;</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>Call the querystring and then release the client</p></div></div><div class="code"><div class="wrapper"> <span class="kd">var</span> <span class="nx">dfd</span> <span class="o">=</span> <span class="nx">Promise</span><span class="p">.</span><span class="nx">pending</span><span class="p">();</span>
<span class="nx">connection</span><span class="p">[</span><span class="nx">method</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="kd">function</span><span class="p">(</span><span class="nx">err</span><span class="p">,</span> <span class="nx">resp</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">err</span><span class="p">)</span> <span class="k">return</span> <span class="nx">dfd</span><span class="p">.</span><span class="nx">reject</span><span class="p">(</span><span class="nx">err</span><span class="p">);</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>We need the context here, because it has the "this.lastID" or "this.changes"</p></div></div><div class="code"><div class="wrapper"> <span class="k">return</span> <span class="nx">dfd</span><span class="p">.</span><span class="nx">fulfill</span><span class="p">([</span><span class="nx">resp</span><span class="p">,</span> <span class="k">this</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>
<span class="nx">poolDefaults</span><span class="o">:</span> <span class="p">{</span>
<span class="nx">max</span><span class="o">:</span> <span class="mi">1</span><span class="p">,</span>
<span class="nx">min</span><span class="o">:</span> <span class="mi">1</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">client</span><span class="p">)</span> <span class="p">{</span> <span class="nx">client</span><span class="p">.</span><span class="nx">close</span><span class="p">();</span> <span class="p">}</span>
<span class="p">},</span>
<span class="nx">ddl</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="kd">var</span> <span class="nx">client</span> <span class="o">=</span> <span class="k">this</span><span class="p">;</span>
<span class="k">return</span> <span class="nx">Promise</span><span class="p">.</span><span class="nx">promisify</span><span class="p">(</span><span class="nx">connection</span><span class="p">.</span><span class="nx">run</span><span class="p">,</span> <span class="nx">connection</span><span class="p">)(</span><span class="s1">&#39;begin transaction;&#39;</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="p">{</span>
<span class="kd">var</span> <span class="nx">transaction</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">Transaction</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="kd">var</span> <span class="nx">containerObj</span> <span class="o">=</span> <span class="nx">transaction</span><span class="p">.</span><span class="nx">getContainerObject</span><span class="p">(</span><span class="nx">connection</span><span class="p">);</span>
<span class="k">return</span> <span class="nx">transaction</span><span class="p">.</span><span class="nx">initiateDeferred</span><span class="p">(</span><span class="kd">function</span><span class="p">(</span><span class="nx">trx</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">client</span><span class="p">.</span><span class="nx">alterSchema</span><span class="p">.</span><span class="nx">call</span><span class="p">(</span><span class="nx">client</span><span class="p">,</span> <span class="nx">builder</span><span class="p">,</span> <span class="nx">trx</span><span class="p">);</span>
<span class="p">})(</span><span class="nx">containerObj</span><span class="p">);</span>
<span class="p">});</span>
<span class="p">},</span>
<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">dfd</span> <span class="o">=</span> <span class="nx">Promise</span><span class="p">.</span><span class="nx">pending</span><span class="p">();</span>
<span class="kd">var</span> <span class="nx">db</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">sqlite3</span><span class="p">.</span><span class="nx">Database</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="nx">filename</span><span class="p">,</span> <span class="kd">function</span><span class="p">(</span><span class="nx">err</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">err</span><span class="p">)</span> <span class="k">return</span> <span class="nx">dfd</span><span class="p">.</span><span class="nx">reject</span><span class="p">(</span><span class="nx">err</span><span class="p">);</span>
<span class="nx">dfd</span><span class="p">.</span><span class="nx">fulfill</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>
<span class="k">return</span> <span class="nx">Promise</span><span class="p">.</span><span class="nx">promisify</span><span class="p">(</span><span class="nx">connection</span><span class="p">.</span><span class="nx">run</span><span class="p">,</span> <span class="nx">connection</span><span class="p">)(</span><span class="s1">&#39;begin transaction;&#39;</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>Finishes the transaction statement on the instance.</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>
<span class="kd">var</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">dfd</span> <span class="o">=</span> <span class="nx">transaction</span><span class="p">.</span><span class="nx">dfd</span><span class="p">;</span>
<span class="k">return</span> <span class="nx">Promise</span>
<span class="p">.</span><span class="nx">promisify</span><span class="p">(</span><span class="nx">transaction</span><span class="p">.</span><span class="nx">connection</span><span class="p">.</span><span class="nx">run</span><span class="p">,</span> <span class="nx">transaction</span><span class="p">.</span><span class="nx">connection</span><span class="p">)(</span><span class="nx">type</span> <span class="o">+</span> <span class="s1">&#39;;&#39;</span><span class="p">)</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">resp</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">type</span> <span class="o">===</span> <span class="s1">&#39;commit&#39;</span><span class="p">)</span> <span class="nx">dfd</span><span class="p">.</span><span class="nx">fulfill</span><span class="p">(</span><span class="nx">msg</span> <span class="o">||</span> <span class="nx">resp</span><span class="p">);</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">type</span> <span class="o">===</span> <span class="s1">&#39;rollback&#39;</span><span class="p">)</span> <span class="nx">dfd</span><span class="p">.</span><span class="nx">reject</span><span class="p">(</span><span class="nx">msg</span> <span class="o">||</span> <span class="nx">resp</span><span class="p">);</span>
<span class="p">},</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">err</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">dfd</span><span class="p">.</span><span class="nx">reject</span><span class="p">(</span><span class="nx">err</span><span class="p">);</span>
<span class="p">}).</span><span class="nx">ensure</span><span class="p">(</span><span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="k">return</span> <span class="nx">client</span><span class="p">.</span><span class="nx">releaseConnection</span><span class="p">(</span><span class="nx">transaction</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="nx">transaction</span><span class="p">.</span><span class="nx">connection</span> <span class="o">=</span> <span class="kc">null</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>This needs to be refactored... badly.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">alterSchema</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="nx">trx</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">currentCol</span><span class="p">,</span> <span class="nx">command</span><span class="p">;</span>
<span class="kd">var</span> <span class="nx">connection</span> <span class="o">=</span> <span class="nx">trx</span><span class="p">.</span><span class="nx">connection</span><span class="p">;</span>
<span class="kd">var</span> <span class="nx">query</span> <span class="o">=</span> <span class="nx">Promise</span><span class="p">.</span><span class="nx">promisify</span><span class="p">(</span><span class="nx">connection</span><span class="p">.</span><span class="nx">all</span><span class="p">,</span> <span class="nx">connection</span><span class="p">);</span>
<span class="k">return</span> <span class="nx">Promise</span><span class="p">.</span><span class="nx">all</span><span class="p">([</span>
<span class="nx">query</span><span class="p">(</span><span class="s1">&#39;PRAGMA table_info(&#39;</span> <span class="o">+</span> <span class="nx">builder</span><span class="p">.</span><span class="nx">table</span> <span class="o">+</span> <span class="s1">&#39;)&#39;</span><span class="p">,</span> <span class="p">[]),</span>
<span class="nx">query</span><span class="p">(</span><span class="s1">&#39;SELECT name, sql FROM sqlite_master WHERE type=&quot;table&quot; AND name=&quot;&#39;</span> <span class="o">+</span> <span class="nx">builder</span><span class="p">.</span><span class="nx">table</span> <span class="o">+</span> <span class="s1">&#39;&quot;&#39;</span><span class="p">,</span> <span class="p">[])</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">resp</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">pragma</span> <span class="o">=</span> <span class="nx">resp</span><span class="p">[</span><span class="mi">0</span><span class="p">];</span>
<span class="kd">var</span> <span class="nx">sql</span> <span class="o">=</span> <span class="nx">resp</span><span class="p">[</span><span class="mi">1</span><span class="p">][</span><span class="mi">0</span><span class="p">];</span>
<span class="nx">command</span> <span class="o">=</span> <span class="nx">builder</span><span class="p">.</span><span class="nx">commands</span><span class="p">[</span><span class="nx">builder</span><span class="p">.</span><span class="nx">currentIndex</span><span class="p">];</span>
<span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="p">(</span><span class="nx">currentCol</span> <span class="o">=</span> <span class="nx">_</span><span class="p">.</span><span class="nx">findWhere</span><span class="p">(</span><span class="nx">pragma</span><span class="p">,</span> <span class="p">{</span><span class="nx">name</span><span class="o">:</span> <span class="nx">command</span><span class="p">.</span><span class="nx">from</span><span class="p">})))</span> <span class="p">{</span>
<span class="k">throw</span> <span class="k">new</span> <span class="nb">Error</span><span class="p">(</span><span class="s1">&#39;The column &#39;</span> <span class="o">+</span> <span class="nx">command</span><span class="p">.</span><span class="nx">from</span> <span class="o">+</span> <span class="s1">&#39; is not in the current table&#39;</span><span class="p">);</span>
<span class="p">}</span>
<span class="k">return</span> <span class="nx">query</span><span class="p">(</span><span class="s1">&#39;ALTER TABLE &#39;</span> <span class="o">+</span> <span class="nx">sql</span><span class="p">.</span><span class="nx">name</span> <span class="o">+</span> <span class="s1">&#39; RENAME TO __migrate__&#39;</span> <span class="o">+</span> <span class="nx">sql</span><span class="p">.</span><span class="nx">name</span><span class="p">);</span>
<span class="p">}).</span><span class="nx">spread</span><span class="p">(</span><span class="kd">function</span><span class="p">(</span><span class="nx">pragma</span><span class="p">,</span> <span class="nx">sql</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">sql</span> <span class="o">=</span> <span class="nx">sql</span><span class="p">[</span><span class="mi">0</span><span class="p">];</span>
<span class="kd">var</span> <span class="nx">currentColumn</span> <span class="o">=</span> <span class="s1">&#39;&quot;&#39;</span> <span class="o">+</span> <span class="nx">command</span><span class="p">.</span><span class="nx">from</span> <span class="o">+</span> <span class="s1">&#39;&quot; &#39;</span> <span class="o">+</span> <span class="nx">currentCol</span><span class="p">.</span><span class="nx">type</span><span class="p">;</span>
<span class="kd">var</span> <span class="nx">newColumn</span> <span class="o">=</span> <span class="s1">&#39;&quot;&#39;</span> <span class="o">+</span> <span class="nx">command</span><span class="p">.</span><span class="nx">to</span> <span class="o">+</span> <span class="s1">&#39;&quot; &#39;</span> <span class="o">+</span> <span class="nx">currentCol</span><span class="p">.</span><span class="nx">type</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">sql</span><span class="p">.</span><span class="nx">indexOf</span><span class="p">(</span><span class="nx">currentColumn</span><span class="p">)</span> <span class="o">===</span> <span class="o">-</span><span class="mi">1</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="nx">trx</span><span class="p">.</span><span class="nx">reject</span><span class="p">(</span><span class="s1">&#39;Unable to find the column to change&#39;</span><span class="p">);</span>
<span class="p">}</span>
<span class="k">return</span> <span class="nx">Promise</span><span class="p">.</span><span class="nx">all</span><span class="p">([</span>
<span class="nx">query</span><span class="p">(</span><span class="nx">sql</span><span class="p">.</span><span class="nx">sql</span><span class="p">.</span><span class="nx">replace</span><span class="p">(</span><span class="nx">currentColumn</span><span class="p">,</span> <span class="nx">newColumn</span><span class="p">)),</span>
<span class="nx">query</span><span class="p">(</span><span class="s1">&#39;SELECT * FROM &quot;__migrate__&#39;</span> <span class="o">+</span> <span class="nx">sql</span><span class="p">.</span><span class="nx">name</span> <span class="o">+</span> <span class="s1">&#39;&quot;&#39;</span><span class="p">),</span>
<span class="p">]);</span>
<span class="p">}).</span><span class="nx">spread</span><span class="p">(</span><span class="kd">function</span><span class="p">(</span><span class="nx">createTable</span><span class="p">,</span> <span class="nx">selected</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">qb</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">Builder</span><span class="p">(</span><span class="nx">builder</span><span class="p">.</span><span class="nx">knex</span><span class="p">).</span><span class="nx">transacting</span><span class="p">(</span><span class="nx">trx</span><span class="p">);</span>
<span class="nx">qb</span><span class="p">.</span><span class="nx">table</span> <span class="o">=</span> <span class="nx">builder</span><span class="p">.</span><span class="nx">table</span><span class="p">;</span>
<span class="k">return</span> <span class="nx">Promise</span><span class="p">.</span><span class="nx">all</span><span class="p">([</span>
<span class="nx">qb</span><span class="p">.</span><span class="nx">insert</span><span class="p">(</span><span class="nx">_</span><span class="p">.</span><span class="nx">map</span><span class="p">(</span><span class="nx">selected</span><span class="p">,</span> <span class="kd">function</span><span class="p">(</span><span class="nx">row</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">row</span><span class="p">[</span><span class="nx">command</span><span class="p">.</span><span class="nx">to</span><span class="p">]</span> <span class="o">=</span> <span class="nx">row</span><span class="p">[</span><span class="nx">command</span><span class="p">.</span><span class="nx">from</span><span class="p">];</span>
<span class="k">return</span> <span class="nx">_</span><span class="p">.</span><span class="nx">omit</span><span class="p">(</span><span class="nx">row</span><span class="p">,</span> <span class="nx">command</span><span class="p">.</span><span class="nx">from</span><span class="p">);</span>
<span class="p">})),</span>
<span class="nx">query</span><span class="p">(</span><span class="s1">&#39;DROP TABLE &quot;__migrate__&#39;</span> <span class="o">+</span> <span class="nx">builder</span><span class="p">.</span><span class="nx">table</span> <span class="o">+</span> <span class="s1">&#39;&quot;&#39;</span><span class="p">)</span>
<span class="p">]);</span>
<span class="p">}).</span><span class="nx">then</span><span class="p">(</span><span class="nx">trx</span><span class="p">.</span><span class="nx">commit</span><span class="p">,</span> <span class="nx">trx</span><span class="p">.</span><span class="nx">rollback</span><span class="p">);</span>
<span class="p">}</span>
<span class="p">});</span></div></div></div></div></body></html>