knex/docs/lib/schema/columnbuilder.html

65 lines
13 KiB
HTML
Raw Normal View History

<!DOCTYPE html><html lang="en"><head><title>lib/schema/columnbuilder</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/columnbuilder"><meta name="groc-project-path" content="lib/schema/columnbuilder.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/columnbuilder.js</div></div><div id="document"><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">&#39;lodash&#39;</span><span class="p">);</span></div></div></div><div class="segment"><div class="comments "><div class="wrapper"><p>Alias a few methods for clarity when processing.</p></div></div><div class="code"><div class="wrapper"><span class="kd">var</span> <span class="nx">columnAlias</span> <span class="o">=</span> <span class="p">{</span>
<span class="s1">&#39;float&#39;</span> <span class="o">:</span> <span class="s1">&#39;floating&#39;</span><span class="p">,</span>
<span class="s1">&#39;enum&#39;</span> <span class="o">:</span> <span class="s1">&#39;enu&#39;</span><span class="p">,</span>
<span class="s1">&#39;boolean&#39;</span><span class="o">:</span> <span class="s1">&#39;bool&#39;</span><span class="p">,</span>
<span class="s1">&#39;string&#39;</span> <span class="o">:</span> <span class="s1">&#39;varchar&#39;</span><span class="p">,</span>
<span class="s1">&#39;bigint&#39;</span> <span class="o">:</span> <span class="s1">&#39;bigInteger&#39;</span>
<span class="p">};</span></div></div></div><div class="segment"><div class="comments "><div class="wrapper"><p>The chainable interface off the original "column" method.</p></div></div><div class="code"><div class="wrapper"><span class="kd">function</span> <span class="nx">ColumnBuilder</span><span class="p">(</span><span class="nx">tableBuilder</span><span class="p">,</span> <span class="nx">type</span><span class="p">,</span> <span class="nx">args</span><span class="p">)</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="p">{};</span>
<span class="k">this</span><span class="p">.</span><span class="nx">_modifiers</span> <span class="o">=</span> <span class="p">{};</span>
<span class="k">this</span><span class="p">.</span><span class="nx">_statements</span> <span class="o">=</span> <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">columnAlias</span><span class="p">[</span><span class="nx">type</span><span class="p">]</span> <span class="o">||</span> <span class="nx">type</span><span class="p">;</span>
<span class="k">this</span><span class="p">.</span><span class="nx">_args</span> <span class="o">=</span> <span class="nx">args</span><span class="p">;</span>
<span class="k">this</span><span class="p">.</span><span class="nx">_tableBuilder</span> <span class="o">=</span> <span class="nx">tableBuilder</span><span class="p">;</span></div></div></div><div class="segment"><div class="comments "><div class="wrapper"><p>If we're altering the table, extend the object
with the available "alter" methods.</p></div></div><div class="code"><div class="wrapper"> <span class="k">if</span> <span class="p">(</span><span class="nx">tableBuilder</span><span class="p">.</span><span class="nx">_method</span> <span class="o">===</span> <span class="s1">&#39;alter&#39;</span><span class="p">)</span> <span class="p">{</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">AlterMethods</span><span class="p">);</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="kd">var</span> <span class="nx">AlterMethods</span> <span class="o">=</span> <span class="p">{};</span></div></div></div><div class="segment"><div class="comments "><div class="wrapper"><p>Specify that the column is to be dropped. This takes precedence
over all other rules for the column.</p></div></div><div class="code"><div class="wrapper"><span class="nx">AlterMethods</span><span class="p">.</span><span class="nx">drop</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">_single</span><span class="p">.</span><span class="nx">drop</span> <span class="o">=</span> <span class="kc">true</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>Specify the "type" that we're looking to set the
Knex takes no responsibility for any data-loss that may
occur when changing data types.</p></div></div><div class="code"><div class="wrapper"><span class="nx">AlterMethods</span><span class="p">.</span><span class="nx">alterType</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="p">{</span>
<span class="k">this</span><span class="p">.</span><span class="nx">_statements</span><span class="p">.</span><span class="nx">push</span><span class="p">({</span>
<span class="nx">grouping</span><span class="o">:</span> <span class="s1">&#39;alterType&#39;</span><span class="p">,</span>
<span class="nx">value</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>All of the modifier methods that can be used to modify the current query.</p></div></div><div class="code"><div class="wrapper"><span class="kd">var</span> <span class="nx">modifiers</span> <span class="o">=</span> <span class="p">[</span>
<span class="s1">&#39;defaultsTo&#39;</span><span class="p">,</span> <span class="s1">&#39;defaultTo&#39;</span><span class="p">,</span> <span class="s1">&#39;unsigned&#39;</span><span class="p">,</span>
<span class="s1">&#39;nullable&#39;</span><span class="p">,</span> <span class="s1">&#39;notNull&#39;</span><span class="p">,</span> <span class="s1">&#39;notNullable&#39;</span><span class="p">,</span>
<span class="s1">&#39;after&#39;</span><span class="p">,</span> <span class="s1">&#39;comment&#39;</span>
<span class="p">];</span></div></div></div><div class="segment"><div class="comments "><div class="wrapper"><p>Aliases for convenience.</p></div></div><div class="code"><div class="wrapper"><span class="kd">var</span> <span class="nx">aliasMethod</span> <span class="o">=</span> <span class="p">{</span>
<span class="nx">defaultsTo</span><span class="o">:</span> <span class="s1">&#39;defaultTo&#39;</span><span class="p">,</span>
<span class="nx">notNull</span><span class="o">:</span> <span class="s1">&#39;notNullable&#39;</span>
<span class="p">};</span></div></div></div><div class="segment"><div class="comments "><div class="wrapper"><p>If we call any of the modifiers (index or otherwise) on the chainable, we pretend
as though we're calling <code>table.method(column)</code> directly.</p></div></div><div class="code"><div class="wrapper"><span class="nx">_</span><span class="p">.</span><span class="nx">each</span><span class="p">(</span><span class="nx">modifiers</span><span class="p">,</span> <span class="kd">function</span><span class="p">(</span><span class="nx">method</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">ColumnBuilder</span><span class="p">.</span><span class="nx">prototype</span><span class="p">[</span><span class="nx">method</span><span class="p">]</span> <span class="o">=</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="nx">aliasMethod</span><span class="p">[</span><span class="nx">method</span><span class="p">])</span> <span class="p">{</span>
<span class="nx">method</span> <span class="o">=</span> <span class="nx">aliasMethod</span><span class="p">[</span><span class="nx">method</span><span class="p">];</span>
<span class="p">}</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">method</span> <span class="o">===</span> <span class="s1">&#39;notNullable&#39;</span><span class="p">)</span> <span class="k">return</span> <span class="k">this</span><span class="p">.</span><span class="nx">nullable</span><span class="p">(</span><span class="kc">false</span><span class="p">);</span>
<span class="k">this</span><span class="p">.</span><span class="nx">_modifiers</span><span class="p">[</span><span class="nx">method</span><span class="p">]</span> <span class="o">=</span> <span class="nx">_</span><span class="p">.</span><span class="nx">toArray</span><span class="p">(</span><span class="nx">arguments</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="nx">_</span><span class="p">.</span><span class="nx">each</span><span class="p">([</span><span class="s1">&#39;index&#39;</span><span class="p">,</span> <span class="s1">&#39;primary&#39;</span><span class="p">,</span> <span class="s1">&#39;unique&#39;</span><span class="p">],</span> <span class="kd">function</span><span class="p">(</span><span class="nx">method</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">ColumnBuilder</span><span class="p">.</span><span class="nx">prototype</span><span class="p">[</span><span class="nx">method</span><span class="p">]</span> <span class="o">=</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="k">this</span><span class="p">.</span><span class="nx">_type</span><span class="p">.</span><span class="nx">toLowerCase</span><span class="p">().</span><span class="nx">indexOf</span><span class="p">(</span><span class="s1">&#39;increments&#39;</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">this</span><span class="p">.</span><span class="nx">_tableBuilder</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">_tableBuilder</span><span class="p">,</span>
<span class="p">[</span><span class="k">this</span><span class="p">.</span><span class="nx">_args</span><span class="p">[</span><span class="mi">0</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">toArray</span><span class="p">(</span><span class="nx">arguments</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="p">};</span>
<span class="p">});</span></div></div></div><div class="segment"><div class="comments "><div class="wrapper"><p>Specify that the current column "references" a column,
which may be tableName.column or just "column"</p></div></div><div class="code"><div class="wrapper"><span class="nx">ColumnBuilder</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">references</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">return</span> <span class="k">this</span><span class="p">.</span><span class="nx">_tableBuilder</span><span class="p">.</span><span class="nx">foreign</span><span class="p">.</span><span class="nx">call</span><span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">_tableBuilder</span><span class="p">,</span> <span class="k">this</span><span class="p">.</span><span class="nx">_args</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="k">this</span><span class="p">)</span>
<span class="p">.</span><span class="nx">_columnBuilder</span><span class="p">(</span><span class="k">this</span><span class="p">)</span>
<span class="p">.</span><span class="nx">references</span><span class="p">(</span><span class="nx">value</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">ColumnBuilder</span><span class="p">;</span></div></div></div></div></body></html>