mirror of
https://github.com/knex/knex.git
synced 2025-12-17 01:58:33 +00:00
109 lines
28 KiB
HTML
109 lines
28 KiB
HTML
<!DOCTYPE html><html lang="en"><head><title>lib/schema/tablecompiler</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/schema/tablecompiler"><meta name="groc-project-path" content="lib/schema/tablecompiler.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/schema/tablecompiler.js</div></div><div id="document"><div class="segment"><div class="comments "><div class="wrapper"><h2 id="table-compiler">Table Compiler</h2></div></div></div><div class="segment"><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">'lodash'</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">'../helpers'</span><span class="p">);</span>
|
|
|
|
<span class="kd">function</span> <span class="nx">TableCompiler</span><span class="p">(</span><span class="nx">tableBuilder</span><span class="p">)</span> <span class="p">{</span>
|
|
<span class="k">this</span><span class="p">.</span><span class="nx">method</span> <span class="o">=</span> <span class="nx">tableBuilder</span><span class="p">.</span><span class="nx">_method</span><span class="p">;</span>
|
|
<span class="k">this</span><span class="p">.</span><span class="nx">tableNameRaw</span> <span class="o">=</span> <span class="nx">tableBuilder</span><span class="p">.</span><span class="nx">_tableName</span><span class="p">;</span>
|
|
<span class="k">this</span><span class="p">.</span><span class="nx">single</span> <span class="o">=</span> <span class="nx">tableBuilder</span><span class="p">.</span><span class="nx">_single</span><span class="p">;</span>
|
|
<span class="k">this</span><span class="p">.</span><span class="nx">grouped</span> <span class="o">=</span> <span class="nx">_</span><span class="p">.</span><span class="nx">groupBy</span><span class="p">(</span><span class="nx">tableBuilder</span><span class="p">.</span><span class="nx">_statements</span><span class="p">,</span> <span class="s1">'grouping'</span><span class="p">);</span>
|
|
<span class="k">this</span><span class="p">.</span><span class="nx">initCompiler</span><span class="p">();</span>
|
|
<span class="p">}</span></div></div></div><div class="segment"><div class="comments "><div class="wrapper"><p>Convert the tableCompiler toSQL</p></div></div><div class="code"><div class="wrapper"><span class="nx">TableCompiler</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><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">this</span><span class="p">[</span><span class="k">this</span><span class="p">.</span><span class="nx">method</span><span class="p">]();</span>
|
|
<span class="k">return</span> <span class="k">this</span><span class="p">.</span><span class="nx">sequence</span><span class="p">;</span>
|
|
<span class="p">};</span></div></div></div><div class="segment"><div class="comments "><div class="wrapper"><h2 id="column-compilation">Column Compilation</h2></div></div></div><div class="segment"><div class="comments "><div class="wrapper"><p>If this is a table "creation", we need to first run through all
|
|
of the columns to build them into a single string,
|
|
and then run through anything else and push it to the query sequence.</p></div></div><div class="code"><div class="wrapper"><span class="nx">TableCompiler</span><span class="p">.</span><span class="nx">prototype</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="p">{</span>
|
|
<span class="kd">var</span> <span class="nx">columns</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">getColumns</span><span class="p">();</span>
|
|
<span class="kd">var</span> <span class="nx">columnTypes</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">getColumnTypes</span><span class="p">(</span><span class="nx">columns</span><span class="p">);</span>
|
|
<span class="k">this</span><span class="p">.</span><span class="nx">createQuery</span><span class="p">(</span><span class="nx">columnTypes</span><span class="p">);</span>
|
|
<span class="k">this</span><span class="p">.</span><span class="nx">columnQueries</span><span class="p">(</span><span class="nx">columns</span><span class="p">);</span>
|
|
<span class="k">this</span><span class="p">.</span><span class="nx">alterTable</span><span class="p">();</span>
|
|
<span class="p">};</span></div></div></div><div class="segment"><div class="comments "><div class="wrapper"><p>If we're altering the table, we need to one-by-one
|
|
go through and handle each of the queries associated
|
|
with altering the table's schema.</p></div></div><div class="code"><div class="wrapper"><span class="nx">TableCompiler</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">alter</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">columns</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">getColumns</span><span class="p">();</span>
|
|
<span class="kd">var</span> <span class="nx">columnTypes</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">getColumnTypes</span><span class="p">(</span><span class="nx">columns</span><span class="p">);</span>
|
|
<span class="k">this</span><span class="p">.</span><span class="nx">addColumns</span><span class="p">(</span><span class="nx">columnTypes</span><span class="p">);</span>
|
|
<span class="k">this</span><span class="p">.</span><span class="nx">columnQueries</span><span class="p">(</span><span class="nx">columns</span><span class="p">);</span>
|
|
<span class="k">this</span><span class="p">.</span><span class="nx">alterTable</span><span class="p">();</span>
|
|
<span class="p">};</span>
|
|
|
|
<span class="nx">TableCompiler</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">foreign</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">foreignData</span><span class="p">)</span> <span class="p">{</span>
|
|
<span class="k">if</span> <span class="p">(</span><span class="nx">foreignData</span><span class="p">.</span><span class="nx">inTable</span> <span class="o">&&</span> <span class="nx">foreignData</span><span class="p">.</span><span class="nx">references</span><span class="p">)</span> <span class="p">{</span>
|
|
<span class="kd">var</span> <span class="nx">keyName</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">_indexCommand</span><span class="p">(</span><span class="s1">'foreign'</span><span class="p">,</span> <span class="k">this</span><span class="p">.</span><span class="nx">tableNameRaw</span><span class="p">,</span> <span class="nx">foreignData</span><span class="p">.</span><span class="nx">column</span><span class="p">);</span>
|
|
<span class="kd">var</span> <span class="nx">column</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">formatter</span><span class="p">.</span><span class="nx">columnize</span><span class="p">(</span><span class="nx">foreignData</span><span class="p">.</span><span class="nx">column</span><span class="p">);</span>
|
|
<span class="kd">var</span> <span class="nx">references</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">formatter</span><span class="p">.</span><span class="nx">columnize</span><span class="p">(</span><span class="nx">foreignData</span><span class="p">.</span><span class="nx">references</span><span class="p">);</span>
|
|
<span class="kd">var</span> <span class="nx">inTable</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">formatter</span><span class="p">.</span><span class="nx">wrap</span><span class="p">(</span><span class="nx">foreignData</span><span class="p">.</span><span class="nx">inTable</span><span class="p">);</span>
|
|
<span class="k">return</span> <span class="s1">'alter table '</span> <span class="o">+</span> <span class="k">this</span><span class="p">.</span><span class="nx">tableName</span><span class="p">()</span> <span class="o">+</span> <span class="s1">' add constraint '</span> <span class="o">+</span> <span class="nx">keyName</span> <span class="o">+</span> <span class="s1">' '</span> <span class="o">+</span>
|
|
<span class="s1">'foreign key ('</span> <span class="o">+</span> <span class="nx">column</span> <span class="o">+</span> <span class="s1">') references '</span> <span class="o">+</span> <span class="nx">inTable</span> <span class="o">+</span> <span class="s1">' ('</span> <span class="o">+</span> <span class="nx">references</span> <span class="o">+</span> <span class="s1">')'</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>Get all of the column sql & bindings individually for building the table queries.</p></div></div><div class="code"><div class="wrapper"><span class="nx">TableCompiler</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">getColumnTypes</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">columns</span><span class="p">)</span> <span class="p">{</span>
|
|
<span class="k">return</span> <span class="nx">_</span><span class="p">.</span><span class="nx">reduce</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">columns</span><span class="p">,</span> <span class="nx">_</span><span class="p">.</span><span class="nx">first</span><span class="p">),</span> <span class="kd">function</span><span class="p">(</span><span class="nx">memo</span><span class="p">,</span> <span class="nx">column</span><span class="p">)</span> <span class="p">{</span>
|
|
<span class="nx">memo</span><span class="p">.</span><span class="nx">sql</span><span class="p">.</span><span class="nx">push</span><span class="p">(</span><span class="nx">column</span><span class="p">.</span><span class="nx">sql</span><span class="p">);</span>
|
|
<span class="nx">memo</span><span class="p">.</span><span class="nx">bindings</span><span class="p">.</span><span class="nx">concat</span><span class="p">(</span><span class="nx">column</span><span class="p">.</span><span class="nx">bindings</span><span class="p">);</span>
|
|
<span class="k">return</span> <span class="nx">memo</span><span class="p">;</span>
|
|
<span class="p">},</span> <span class="p">{</span><span class="nx">sql</span><span class="o">:</span> <span class="p">[],</span> <span class="nx">bindings</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>Adds all of the additional queries from the "column"</p></div></div><div class="code"><div class="wrapper"><span class="nx">TableCompiler</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">columnQueries</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">columns</span><span class="p">)</span> <span class="p">{</span>
|
|
<span class="kd">var</span> <span class="nx">queries</span> <span class="o">=</span> <span class="nx">_</span><span class="p">.</span><span class="nx">reduce</span><span class="p">(</span><span class="nx">columns</span><span class="p">,</span> <span class="kd">function</span><span class="p">(</span><span class="nx">memo</span><span class="p">,</span> <span class="nx">column</span><span class="p">)</span> <span class="p">{</span>
|
|
<span class="nx">memo</span><span class="p">.</span><span class="nx">concat</span><span class="p">(</span><span class="nx">_</span><span class="p">.</span><span class="nx">rest</span><span class="p">(</span><span class="nx">column</span><span class="p">));</span>
|
|
<span class="k">return</span> <span class="nx">memo</span><span class="p">;</span>
|
|
<span class="p">},</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">queries</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span> <span class="o"><</span> <span class="nx">l</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
|
|
<span class="k">this</span><span class="p">.</span><span class="nx">pushQuery</span><span class="p">(</span><span class="nx">queries</span><span class="p">[</span><span class="nx">i</span><span class="p">]);</span>
|
|
<span class="p">}</span>
|
|
<span class="k">return</span> <span class="nx">queries</span><span class="p">;</span>
|
|
<span class="p">};</span></div></div></div><div class="segment"><div class="comments "><div class="wrapper"><p>Add a new column.</p></div></div><div class="code"><div class="wrapper"><span class="nx">TableCompiler</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">addColumnsPrefix</span> <span class="o">=</span> <span class="s1">'add column '</span><span class="p">;</span></div></div></div><div class="segment"><div class="comments "><div class="wrapper"><p>All of the columns to "add" for the query</p></div></div><div class="code"><div class="wrapper"><span class="nx">TableCompiler</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">addColumns</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">columns</span><span class="p">)</span> <span class="p">{</span>
|
|
<span class="k">if</span> <span class="p">(</span><span class="nx">columns</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">0</span><span class="p">)</span> <span class="p">{</span>
|
|
<span class="kd">var</span> <span class="nx">columnSql</span> <span class="o">=</span> <span class="nx">_</span><span class="p">.</span><span class="nx">map</span><span class="p">(</span><span class="nx">columns</span><span class="p">.</span><span class="nx">sql</span><span class="p">,</span> <span class="kd">function</span><span class="p">(</span><span class="nx">column</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">addColumnsPrefix</span> <span class="o">+</span> <span class="nx">column</span><span class="p">;</span>
|
|
<span class="p">},</span> <span class="k">this</span><span class="p">);</span>
|
|
<span class="k">this</span><span class="p">.</span><span class="nx">pushQuery</span><span class="p">({</span>
|
|
<span class="nx">sql</span><span class="o">:</span> <span class="s1">'alter table '</span> <span class="o">+</span> <span class="k">this</span><span class="p">.</span><span class="nx">tableName</span><span class="p">()</span> <span class="o">+</span> <span class="s1">' '</span> <span class="o">+</span> <span class="nx">columnSql</span><span class="p">.</span><span class="nx">join</span><span class="p">(</span><span class="s1">', '</span><span class="p">),</span>
|
|
<span class="nx">bindings</span><span class="o">:</span> <span class="nx">columns</span><span class="p">.</span><span class="nx">bindings</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>Compile the columns as needed for the current create or alter table</p></div></div><div class="code"><div class="wrapper"><span class="nx">TableCompiler</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">getColumns</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">compiledColumns</span> <span class="o">=</span> <span class="p">[],</span> <span class="nx">columns</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">grouped</span><span class="p">.</span><span class="nx">columns</span> <span class="o">||</span> <span class="p">[];</span>
|
|
<span class="kd">var</span> <span class="nx">ColumnCompiler</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">ColumnCompiler</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">columns</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span> <span class="o"><</span> <span class="nx">l</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
|
|
<span class="nx">compiledColumns</span><span class="p">.</span><span class="nx">push</span><span class="p">(</span><span class="k">new</span> <span class="nx">ColumnCompiler</span><span class="p">(</span><span class="k">this</span><span class="p">,</span> <span class="nx">columns</span><span class="p">[</span><span class="nx">i</span><span class="p">].</span><span class="nx">builder</span><span class="p">).</span><span class="nx">toSQL</span><span class="p">());</span>
|
|
<span class="p">}</span>
|
|
<span class="k">return</span> <span class="nx">compiledColumns</span><span class="p">;</span>
|
|
<span class="p">};</span>
|
|
|
|
<span class="nx">TableCompiler</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">tableName</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">formatter</span><span class="p">.</span><span class="nx">wrap</span><span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">tableNameRaw</span><span class="p">);</span>
|
|
<span class="p">};</span></div></div></div><div class="segment"><div class="comments "><div class="wrapper"><p>Generate all of the alter column statements necessary for the query.</p></div></div><div class="code"><div class="wrapper"><span class="nx">TableCompiler</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">alterTable</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">alterTable</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">grouped</span><span class="p">.</span><span class="nx">alterTable</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">alterTable</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span> <span class="o"><</span> <span class="nx">l</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
|
|
<span class="kd">var</span> <span class="nx">statement</span> <span class="o">=</span> <span class="nx">alterTable</span><span class="p">[</span><span class="nx">i</span><span class="p">];</span>
|
|
<span class="k">if</span> <span class="p">(</span><span class="k">this</span><span class="p">[</span><span class="nx">statement</span><span class="p">.</span><span class="nx">method</span><span class="p">])</span> <span class="p">{</span>
|
|
<span class="k">this</span><span class="p">[</span><span class="nx">statement</span><span class="p">.</span><span class="nx">method</span><span class="p">].</span><span class="nx">apply</span><span class="p">(</span><span class="k">this</span><span class="p">,</span> <span class="nx">statement</span><span class="p">.</span><span class="nx">args</span><span class="p">);</span>
|
|
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
|
|
<span class="nx">console</span><span class="p">.</span><span class="nx">error</span><span class="p">(</span><span class="s1">'Debug: '</span> <span class="o">+</span> <span class="nx">statement</span><span class="p">.</span><span class="nx">method</span> <span class="o">+</span> <span class="s1">' does not exist'</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>Drop the index on the current table.</p></div></div><div class="code"><div class="wrapper"><span class="nx">TableCompiler</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">dropIndex</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">value</span><span class="p">)</span> <span class="p">{</span>
|
|
<span class="k">this</span><span class="p">.</span><span class="nx">pushQuery</span><span class="p">(</span><span class="s1">'drop index'</span> <span class="o">+</span> <span class="nx">value</span><span class="p">);</span>
|
|
<span class="p">};</span></div></div></div><div class="segment"><div class="comments "><div class="wrapper"><p>Drop the unique</p></div></div><div class="code"><div class="wrapper"><span class="nx">TableCompiler</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">dropUnique</span> <span class="o">=</span>
|
|
<span class="nx">TableCompiler</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">dropForeign</span> <span class="o">=</span> <span class="kd">function</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">'Method implemented in the dialect driver'</span><span class="p">);</span>
|
|
<span class="p">};</span>
|
|
|
|
<span class="nx">TableCompiler</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">dropColumnPrefix</span> <span class="o">=</span> <span class="s1">'drop column '</span><span class="p">;</span>
|
|
<span class="nx">TableCompiler</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">dropColumn</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">columns</span> <span class="o">=</span> <span class="nx">helpers</span><span class="p">.</span><span class="nx">normalizeArr</span><span class="p">.</span><span class="nx">apply</span><span class="p">(</span><span class="kc">null</span><span class="p">,</span> <span class="nx">arguments</span><span class="p">);</span>
|
|
<span class="kd">var</span> <span class="nx">drops</span> <span class="o">=</span> <span class="nx">_</span><span class="p">.</span><span class="nx">map</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">columns</span><span class="p">)</span> <span class="o">?</span> <span class="nx">columns</span> <span class="o">:</span> <span class="p">[</span><span class="nx">columns</span><span class="p">],</span> <span class="kd">function</span><span class="p">(</span><span class="nx">column</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">dropColumnPrefix</span> <span class="o">+</span> <span class="k">this</span><span class="p">.</span><span class="nx">formatter</span><span class="p">.</span><span class="nx">wrap</span><span class="p">(</span><span class="nx">column</span><span class="p">);</span>
|
|
<span class="p">},</span> <span class="k">this</span><span class="p">);</span>
|
|
<span class="k">this</span><span class="p">.</span><span class="nx">pushQuery</span><span class="p">(</span><span class="s1">'alter table '</span> <span class="o">+</span> <span class="k">this</span><span class="p">.</span><span class="nx">tableName</span><span class="p">()</span> <span class="o">+</span> <span class="s1">' '</span> <span class="o">+</span> <span class="nx">drops</span><span class="p">.</span><span class="nx">join</span><span class="p">(</span><span class="s1">', '</span><span class="p">));</span>
|
|
<span class="p">};</span></div></div></div><div class="segment"><div class="comments "><div class="wrapper"><p>If no name was specified for this index, we will create one using a basic
|
|
convention of the table name, followed by the columns, followed by an
|
|
index type, such as primary or index, which makes the index unique.</p></div></div><div class="code"><div class="wrapper"><span class="nx">TableCompiler</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">_indexCommand</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">tableName</span><span class="p">,</span> <span class="nx">columns</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">_</span><span class="p">.</span><span class="nx">isArray</span><span class="p">(</span><span class="nx">columns</span><span class="p">))</span> <span class="nx">columns</span> <span class="o">=</span> <span class="nx">columns</span> <span class="o">?</span> <span class="p">[</span><span class="nx">columns</span><span class="p">]</span> <span class="o">:</span> <span class="p">[];</span>
|
|
<span class="kd">var</span> <span class="nx">table</span> <span class="o">=</span> <span class="nx">tableName</span><span class="p">.</span><span class="nx">replace</span><span class="p">(</span><span class="sr">/\.|-/g</span><span class="p">,</span> <span class="s1">'_'</span><span class="p">);</span>
|
|
<span class="k">return</span> <span class="p">(</span><span class="nx">table</span> <span class="o">+</span> <span class="s1">'_'</span> <span class="o">+</span> <span class="nx">columns</span><span class="p">.</span><span class="nx">join</span><span class="p">(</span><span class="s1">'_'</span><span class="p">)</span> <span class="o">+</span> <span class="s1">'_'</span> <span class="o">+</span> <span class="nx">type</span><span class="p">).</span><span class="nx">toLowerCase</span><span class="p">();</span>
|
|
<span class="p">};</span>
|
|
|
|
<span class="nx">module</span><span class="p">.</span><span class="nx">exports</span> <span class="o">=</span> <span class="nx">TableCompiler</span><span class="p">;</span></div></div></div></div></body></html> |