knex/docs/lib/schemabuilder.html
2013-12-12 17:37:44 -05:00

232 lines
60 KiB
HTML

<!DOCTYPE html><html lang="en"><head><title>lib/schemabuilder</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/schemabuilder"><meta name="groc-project-path" content="lib/schemabuilder.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/schemabuilder.js</div></div><div id="document"><div class="segment"><div class="comments"><div class="wrapper"><h2 id="schema-builder">Schema Builder</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">&#39;lodash&#39;</span><span class="p">);</span>
<span class="kd">var</span> <span class="nx">Common</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;./common&#39;</span><span class="p">).</span><span class="nx">Common</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;./helpers&#39;</span><span class="p">).</span><span class="nx">Helpers</span><span class="p">;</span>
<span class="kd">var</span> <span class="nx">SchemaBuilder</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">knex</span><span class="p">)</span> <span class="p">{</span>
<span class="k">this</span><span class="p">.</span><span class="nx">knex</span> <span class="o">=</span> <span class="nx">knex</span><span class="p">;</span>
<span class="k">this</span><span class="p">.</span><span class="nx">client</span> <span class="o">=</span> <span class="nx">knex</span><span class="p">.</span><span class="nx">client</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">knex</span><span class="p">.</span><span class="nx">schemaGrammar</span><span class="p">;</span>
<span class="k">this</span><span class="p">.</span><span class="nx">columns</span> <span class="o">=</span> <span class="p">[];</span>
<span class="k">this</span><span class="p">.</span><span class="nx">commands</span> <span class="o">=</span> <span class="p">[];</span>
<span class="k">this</span><span class="p">.</span><span class="nx">bindings</span> <span class="o">=</span> <span class="p">[];</span>
<span class="k">this</span><span class="p">.</span><span class="nx">flags</span> <span class="o">=</span> <span class="p">{};</span>
<span class="nx">_</span><span class="p">.</span><span class="nx">bindAll</span><span class="p">(</span><span class="k">this</span><span class="p">,</span> <span class="s1">&#39;handleResponse&#39;</span><span class="p">);</span>
<span class="p">};</span>
<span class="kd">var</span> <span class="nx">toClone</span> <span class="o">=</span> <span class="p">[</span><span class="s1">&#39;columns&#39;</span><span class="p">,</span> <span class="s1">&#39;commands&#39;</span><span class="p">,</span> <span class="s1">&#39;bindings&#39;</span><span class="p">,</span> <span class="s1">&#39;flags&#39;</span><span class="p">];</span>
<span class="nx">_</span><span class="p">.</span><span class="nx">extend</span><span class="p">(</span><span class="nx">SchemaBuilder</span><span class="p">.</span><span class="nx">prototype</span><span class="p">,</span> <span class="nx">Common</span><span class="p">,</span> <span class="p">{</span>
<span class="nx">_source</span><span class="o">:</span> <span class="s1">&#39;SchemaBuilder&#39;</span><span class="p">,</span>
<span class="nx">clone</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="nx">_</span><span class="p">.</span><span class="nx">reduce</span><span class="p">(</span><span class="nx">toClone</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">key</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">memo</span><span class="p">[</span><span class="nx">key</span><span class="p">]</span> <span class="o">=</span> <span class="nx">Helpers</span><span class="p">.</span><span class="nx">deepClone</span><span class="p">(</span><span class="k">this</span><span class="p">[</span><span class="nx">key</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="k">this</span><span class="p">.</span><span class="nx">instance</span><span class="p">(),</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>A callback from the table building <code>Knex.schemaBuilder</code> calls.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">callback</span><span class="o">:</span> <span class="kd">function</span><span class="p">(</span><span class="nx">callback</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">callback</span><span class="p">)</span> <span class="nx">callback</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="k">this</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>Determine if the blueprint has a create command.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">creating</span><span class="o">:</span> <span class="kd">function</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="k">this</span><span class="p">.</span><span class="nx">commands</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&lt;</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">if</span> <span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">commands</span><span class="p">[</span><span class="nx">i</span><span class="p">].</span><span class="nx">name</span> <span class="o">==</span> <span class="s1">&#39;createTable&#39;</span><span class="p">)</span> <span class="k">return</span> <span class="kc">true</span><span class="p">;</span>
<span class="p">}</span>
<span class="k">return</span> <span class="kc">false</span><span class="p">;</span>
<span class="p">},</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>Sets the engine to use when creating the table in MySql</p></div></div><div class="code"><div class="wrapper"> <span class="nx">engine</span><span class="o">:</span> <span class="kd">function</span><span class="p">(</span><span class="nx">name</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="k">this</span><span class="p">.</span><span class="nx">creating</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 `engine` modifier may only be used while creating a table.&#39;</span><span class="p">);</span>
<span class="k">this</span><span class="p">.</span><span class="nx">flags</span><span class="p">.</span><span class="nx">engine</span> <span class="o">=</span> <span class="nx">name</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>Sets the character set for the table in MySql</p></div></div><div class="code"><div class="wrapper"> <span class="nx">charset</span><span class="o">:</span> <span class="kd">function</span><span class="p">(</span><span class="nx">charset</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="k">this</span><span class="p">.</span><span class="nx">creating</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 `engine` modifier may only be used while creating a table.&#39;</span><span class="p">);</span>
<span class="k">this</span><span class="p">.</span><span class="nx">flags</span><span class="p">.</span><span class="nx">charset</span> <span class="o">=</span> <span class="nx">charset</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>Sets the collation for the table in MySql</p></div></div><div class="code"><div class="wrapper"> <span class="nx">collate</span><span class="o">:</span> <span class="kd">function</span><span class="p">(</span><span class="nx">collation</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="k">this</span><span class="p">.</span><span class="nx">creating</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 `engine` modifier may only be used while creating a table.&#39;</span><span class="p">);</span>
<span class="k">this</span><span class="p">.</span><span class="nx">flags</span><span class="p">.</span><span class="nx">collation</span> <span class="o">=</span> <span class="nx">collation</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>Adds a comment to the current table being created.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">comment</span><span class="o">:</span> <span class="kd">function</span><span class="p">(</span><span class="nx">comment</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">_addCommand</span><span class="p">(</span><span class="s1">&#39;comment&#39;</span><span class="p">,</span> <span class="p">{</span><span class="nx">comment</span><span class="o">:</span> <span class="nx">comment</span><span class="p">});</span>
<span class="p">},</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>Indicate that the given columns should be dropped.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">dropColumn</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="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="k">return</span> <span class="k">this</span><span class="p">.</span><span class="nx">_addCommand</span><span class="p">(</span><span class="s1">&#39;dropColumn&#39;</span><span class="p">,</span> <span class="p">{</span><span class="nx">columns</span><span class="o">:</span> <span class="nx">columns</span><span class="p">});</span>
<span class="p">},</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>Indicate that the given columns should be dropped.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">dropColumns</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">dropColumn</span><span class="p">(</span><span class="nx">arguments</span><span class="p">);</span>
<span class="p">},</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>Indicate that the given primary key should be dropped.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">dropPrimary</span><span class="o">:</span> <span class="kd">function</span><span class="p">(</span><span class="nx">index</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">_dropIndexCommand</span><span class="p">(</span><span class="s1">&#39;dropPrimary&#39;</span><span class="p">,</span> <span class="nx">index</span><span class="p">);</span>
<span class="p">},</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>Indicate that the given unique key should be dropped.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">dropUnique</span><span class="o">:</span> <span class="kd">function</span><span class="p">(</span><span class="nx">index</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">_dropIndexCommand</span><span class="p">(</span><span class="s1">&#39;dropUnique&#39;</span><span class="p">,</span> <span class="nx">index</span><span class="p">);</span>
<span class="p">},</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>Indicate that the given index should be dropped.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">dropIndex</span><span class="o">:</span> <span class="kd">function</span><span class="p">(</span><span class="nx">index</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">_dropIndexCommand</span><span class="p">(</span><span class="s1">&#39;dropIndex&#39;</span><span class="p">,</span> <span class="nx">index</span><span class="p">);</span>
<span class="p">},</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>Indicate that the given foreign key should be dropped.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">dropForeign</span><span class="o">:</span> <span class="kd">function</span><span class="p">(</span><span class="nx">index</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">_dropIndexCommand</span><span class="p">(</span><span class="s1">&#39;dropForeign&#39;</span><span class="p">,</span> <span class="nx">index</span><span class="p">);</span>
<span class="p">},</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>Specify the primary key(s) for the table.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">primary</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="nx">name</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">_indexCommand</span><span class="p">(</span><span class="s1">&#39;primary&#39;</span><span class="p">,</span> <span class="nx">columns</span><span class="p">,</span> <span class="nx">name</span><span class="p">);</span>
<span class="p">},</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>Specify a unique index for the table.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">unique</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="nx">name</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">_indexCommand</span><span class="p">(</span><span class="s1">&#39;unique&#39;</span><span class="p">,</span> <span class="nx">columns</span><span class="p">,</span> <span class="nx">name</span><span class="p">);</span>
<span class="p">},</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>Specify an index for the table.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">index</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="nx">name</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">_indexCommand</span><span class="p">(</span><span class="s1">&#39;index&#39;</span><span class="p">,</span> <span class="nx">columns</span><span class="p">,</span> <span class="nx">name</span><span class="p">);</span>
<span class="p">},</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>Rename a column from one value to another value.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">renameColumn</span><span class="o">:</span> <span class="kd">function</span><span class="p">(</span><span class="nx">from</span><span class="p">,</span> <span class="nx">to</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">_addCommand</span><span class="p">(</span><span class="s1">&#39;renameColumn&#39;</span><span class="p">,</span> <span class="p">{</span><span class="nx">from</span><span class="o">:</span> <span class="nx">from</span><span class="p">,</span> <span class="nx">to</span><span class="o">:</span> <span class="nx">to</span><span class="p">});</span>
<span class="p">},</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>Specify a foreign key for the table, also getting any
relevant info from the chain during column.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">foreign</span><span class="o">:</span> <span class="kd">function</span><span class="p">(</span><span class="nx">column</span><span class="p">,</span> <span class="nx">name</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">chained</span><span class="p">,</span> <span class="nx">chainable</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">&#39;foreign&#39;</span><span class="p">,</span> <span class="nx">column</span><span class="p">,</span> <span class="nx">name</span><span class="p">);</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">_</span><span class="p">.</span><span class="nx">isObject</span><span class="p">(</span><span class="nx">column</span><span class="p">))</span> <span class="p">{</span>
<span class="nx">chained</span> <span class="o">=</span> <span class="nx">_</span><span class="p">.</span><span class="nx">pick</span><span class="p">(</span><span class="nx">column</span><span class="p">,</span> <span class="s1">&#39;foreignColumn&#39;</span><span class="p">,</span> <span class="s1">&#39;foreignTable&#39;</span><span class="p">,</span> <span class="s1">&#39;commandOnDelete&#39;</span><span class="p">,</span> <span class="s1">&#39;commandOnUpdate&#39;</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">extend</span><span class="p">(</span><span class="nx">chainable</span><span class="p">,</span> <span class="nx">ForeignChainable</span><span class="p">,</span> <span class="nx">chained</span><span class="p">);</span>
<span class="p">},</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>Create a new auto-incrementing column on the table.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">increments</span><span class="o">:</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">_addColumn</span><span class="p">(</span><span class="s1">&#39;integer&#39;</span><span class="p">,</span> <span class="p">(</span><span class="nx">column</span> <span class="o">||</span> <span class="s1">&#39;id&#39;</span><span class="p">),</span> <span class="p">{</span><span class="nx">isUnsigned</span><span class="o">:</span> <span class="kc">true</span><span class="p">,</span> <span class="nx">autoIncrement</span><span class="o">:</span> <span class="kc">true</span><span class="p">,</span> <span class="nx">length</span><span class="o">:</span> <span class="mi">11</span><span class="p">});</span>
<span class="p">},</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>Create a new auto-incrementing big-int on the table</p></div></div><div class="code"><div class="wrapper"> <span class="nx">bigIncrements</span><span class="o">:</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">_addColumn</span><span class="p">(</span><span class="s1">&#39;bigInteger&#39;</span><span class="p">,</span> <span class="p">(</span><span class="nx">column</span> <span class="o">||</span> <span class="s1">&#39;id&#39;</span><span class="p">),</span> <span class="p">{</span><span class="nx">isUnsigned</span><span class="o">:</span> <span class="kc">true</span><span class="p">,</span> <span class="nx">autoIncrement</span><span class="o">:</span> <span class="kc">true</span><span class="p">});</span>
<span class="p">},</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>Create a new string column on the table.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">string</span><span class="o">:</span> <span class="kd">function</span><span class="p">(</span><span class="nx">column</span><span class="p">,</span> <span class="nx">length</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">_addColumn</span><span class="p">(</span><span class="s1">&#39;string&#39;</span><span class="p">,</span> <span class="nx">column</span><span class="p">,</span> <span class="p">{</span><span class="nx">length</span><span class="o">:</span> <span class="p">(</span><span class="nx">length</span> <span class="o">||</span> <span class="mi">255</span><span class="p">)});</span>
<span class="p">},</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>Alias varchar to string</p></div></div><div class="code"><div class="wrapper"> <span class="nx">varchar</span><span class="o">:</span> <span class="kd">function</span><span class="p">(</span><span class="nx">column</span><span class="p">,</span> <span class="nx">length</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">string</span><span class="p">(</span><span class="nx">column</span><span class="p">,</span> <span class="nx">length</span><span class="p">);</span>
<span class="p">},</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>Create a new text column on the table.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">text</span><span class="o">:</span> <span class="kd">function</span><span class="p">(</span><span class="nx">column</span><span class="p">,</span> <span class="nx">length</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">_addColumn</span><span class="p">(</span><span class="s1">&#39;text&#39;</span><span class="p">,</span> <span class="nx">column</span><span class="p">,</span> <span class="p">{</span><span class="nx">length</span><span class="o">:</span> <span class="p">(</span><span class="nx">length</span> <span class="o">||</span> <span class="kc">false</span><span class="p">)});</span>
<span class="p">},</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>Create a new integer column on the table.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">integer</span><span class="o">:</span> <span class="kd">function</span><span class="p">(</span><span class="nx">column</span><span class="p">,</span> <span class="nx">length</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">_addColumn</span><span class="p">(</span><span class="s1">&#39;integer&#39;</span><span class="p">,</span> <span class="nx">column</span><span class="p">,</span> <span class="p">{</span><span class="nx">length</span><span class="o">:</span> <span class="p">(</span><span class="nx">length</span> <span class="o">||</span> <span class="mi">11</span><span class="p">)});</span>
<span class="p">},</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>Create a new biginteger column on the table</p></div></div><div class="code"><div class="wrapper"> <span class="nx">bigInteger</span><span class="o">:</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">_addColumn</span><span class="p">(</span><span class="s1">&#39;bigInteger&#39;</span><span class="p">,</span> <span class="nx">column</span><span class="p">);</span>
<span class="p">},</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>Create a new tinyinteger column on the table.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">tinyInteger</span><span class="o">:</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">_addColumn</span><span class="p">(</span><span class="s1">&#39;tinyInteger&#39;</span><span class="p">,</span> <span class="nx">column</span><span class="p">);</span>
<span class="p">},</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>Alias for tinyinteger column.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">tinyint</span><span class="o">:</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">tinyInteger</span><span class="p">(</span><span class="nx">column</span><span class="p">);</span>
<span class="p">},</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>Create a new float column on the table.</p></div></div><div class="code"><div class="wrapper"> <span class="kr">float</span><span class="o">:</span> <span class="kd">function</span><span class="p">(</span><span class="nx">column</span><span class="p">,</span> <span class="nx">precision</span><span class="p">,</span> <span class="nx">scale</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">_addColumn</span><span class="p">(</span><span class="s1">&#39;float&#39;</span><span class="p">,</span> <span class="nx">column</span><span class="p">,</span> <span class="p">{</span>
<span class="nx">precision</span><span class="o">:</span> <span class="p">(</span><span class="nx">precision</span> <span class="o">==</span> <span class="kc">null</span> <span class="o">?</span> <span class="mi">8</span> <span class="o">:</span> <span class="nx">precision</span><span class="p">),</span>
<span class="nx">scale</span><span class="o">:</span> <span class="p">(</span><span class="nx">scale</span> <span class="o">==</span> <span class="kc">null</span> <span class="o">?</span> <span class="mi">2</span> <span class="o">:</span> <span class="nx">scale</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>Create a new decimal column on the table.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">decimal</span><span class="o">:</span> <span class="kd">function</span><span class="p">(</span><span class="nx">column</span><span class="p">,</span> <span class="nx">precision</span><span class="p">,</span> <span class="nx">scale</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">_addColumn</span><span class="p">(</span><span class="s1">&#39;decimal&#39;</span><span class="p">,</span> <span class="nx">column</span><span class="p">,</span> <span class="p">{</span>
<span class="nx">precision</span><span class="o">:</span> <span class="p">(</span><span class="nx">precision</span> <span class="o">==</span> <span class="kc">null</span> <span class="o">?</span> <span class="mi">8</span> <span class="o">:</span> <span class="nx">precision</span><span class="p">),</span>
<span class="nx">scale</span><span class="o">:</span> <span class="p">(</span><span class="nx">scale</span> <span class="o">==</span> <span class="kc">null</span> <span class="o">?</span> <span class="mi">2</span> <span class="o">:</span> <span class="nx">scale</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>Alias to "bool"</p></div></div><div class="code"><div class="wrapper"> <span class="kr">boolean</span><span class="o">:</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">bool</span><span class="p">(</span><span class="nx">column</span><span class="p">);</span>
<span class="p">},</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>Create a new boolean column on the table</p></div></div><div class="code"><div class="wrapper"> <span class="nx">bool</span><span class="o">:</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">_addColumn</span><span class="p">(</span><span class="s1">&#39;boolean&#39;</span><span class="p">,</span> <span class="nx">column</span><span class="p">);</span>
<span class="p">},</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>Create a new date column on the table.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">date</span><span class="o">:</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">_addColumn</span><span class="p">(</span><span class="s1">&#39;date&#39;</span><span class="p">,</span> <span class="nx">column</span><span class="p">);</span>
<span class="p">},</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>Create a new date-time column on the table.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">dateTime</span><span class="o">:</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">_addColumn</span><span class="p">(</span><span class="s1">&#39;dateTime&#39;</span><span class="p">,</span> <span class="nx">column</span><span class="p">);</span>
<span class="p">},</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>Create a new time column on the table.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">time</span><span class="o">:</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">_addColumn</span><span class="p">(</span><span class="s1">&#39;time&#39;</span><span class="p">,</span> <span class="nx">column</span><span class="p">);</span>
<span class="p">},</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>Create a new timestamp column on the table.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">timestamp</span><span class="o">:</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">_addColumn</span><span class="p">(</span><span class="s1">&#39;timestamp&#39;</span><span class="p">,</span> <span class="nx">column</span><span class="p">);</span>
<span class="p">},</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>Add creation and update dateTime's to the table.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">timestamps</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">dateTime</span><span class="p">(</span><span class="s1">&#39;created_at&#39;</span><span class="p">);</span>
<span class="k">this</span><span class="p">.</span><span class="nx">dateTime</span><span class="p">(</span><span class="s1">&#39;updated_at&#39;</span><span class="p">);</span>
<span class="p">},</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>Alias to enum.</p></div></div><div class="code"><div class="wrapper"> <span class="s2">&quot;enum&quot;</span><span class="o">:</span> <span class="kd">function</span><span class="p">(</span><span class="nx">column</span><span class="p">,</span> <span class="nx">allowed</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">enu</span><span class="p">(</span><span class="nx">column</span><span class="p">,</span> <span class="nx">allowed</span><span class="p">);</span>
<span class="p">},</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>Create a new enum column on the table.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">enu</span><span class="o">:</span> <span class="kd">function</span><span class="p">(</span><span class="nx">column</span><span class="p">,</span> <span class="nx">allowed</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">allowed</span><span class="p">))</span> <span class="nx">allowed</span> <span class="o">=</span> <span class="p">[</span><span class="nx">allowed</span><span class="p">];</span>
<span class="k">return</span> <span class="k">this</span><span class="p">.</span><span class="nx">_addColumn</span><span class="p">(</span><span class="s1">&#39;enum&#39;</span><span class="p">,</span> <span class="nx">column</span><span class="p">,</span> <span class="p">{</span><span class="nx">allowed</span><span class="o">:</span> <span class="nx">allowed</span><span class="p">});</span>
<span class="p">},</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>Create a new bit column on the table.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">bit</span><span class="o">:</span> <span class="kd">function</span><span class="p">(</span><span class="nx">column</span><span class="p">,</span> <span class="nx">length</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">_addColumn</span><span class="p">(</span><span class="s1">&#39;bit&#39;</span><span class="p">,</span> <span class="nx">column</span><span class="p">,</span> <span class="p">{</span><span class="nx">length</span><span class="o">:</span> <span class="p">(</span><span class="nx">length</span> <span class="o">||</span> <span class="kc">false</span><span class="p">)});</span>
<span class="p">},</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>Create a new binary column on the table.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">binary</span><span class="o">:</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">_addColumn</span><span class="p">(</span><span class="s1">&#39;binary&#39;</span><span class="p">,</span> <span class="nx">column</span><span class="p">);</span>
<span class="p">},</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>Create a new json column on the table.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">json</span><span class="o">:</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">_addColumn</span><span class="p">(</span><span class="s1">&#39;json&#39;</span><span class="p">,</span> <span class="nx">column</span><span class="p">);</span>
<span class="p">},</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>Create a new uuid column on the table.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">uuid</span><span class="o">:</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">_addColumn</span><span class="p">(</span><span class="s1">&#39;uuid&#39;</span><span class="p">,</span> <span class="nx">column</span><span class="p">);</span>
<span class="p">},</span>
<span class="nx">specificType</span><span class="o">:</span> <span class="kd">function</span><span class="p">(</span><span class="nx">column</span><span class="p">,</span> <span class="nx">type</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">_addColumn</span><span class="p">(</span><span class="s1">&#39;specificType&#39;</span><span class="p">,</span> <span class="nx">column</span><span class="p">,</span> <span class="p">{</span><span class="nx">specific</span><span class="o">:</span> <span class="nx">type</span><span class="p">});</span>
<span class="p">},</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><hr /></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>Create a new drop index command on the blueprint.
If the index is an array of columns, the developer means
to drop an index merely by specifying the columns involved.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">_dropIndexCommand</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">index</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="p">[];</span>
<span class="k">if</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">index</span><span class="p">))</span> <span class="p">{</span>
<span class="nx">columns</span> <span class="o">=</span> <span class="nx">index</span><span class="p">;</span>
<span class="nx">index</span> <span class="o">=</span> <span class="kc">null</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">_indexCommand</span><span class="p">(</span><span class="nx">type</span><span class="p">,</span> <span class="nx">columns</span><span class="p">,</span> <span class="nx">index</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 index command to the blueprint.
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">_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">columns</span><span class="p">,</span> <span class="nx">index</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">index</span> <span class="o">||</span> <span class="p">(</span><span class="nx">index</span> <span class="o">=</span> <span class="kc">null</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="k">if</span> <span class="p">(</span><span class="nx">index</span> <span class="o">===</span> <span class="kc">null</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">table</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">table</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">&#39;_&#39;</span><span class="p">);</span>
<span class="nx">index</span> <span class="o">=</span> <span class="p">(</span><span class="nx">table</span> <span class="o">+</span> <span class="s1">&#39;_&#39;</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="kd">function</span><span class="p">(</span><span class="nx">col</span><span class="p">)</span> <span class="p">{</span> <span class="k">return</span> <span class="nx">col</span><span class="p">.</span><span class="nx">name</span> <span class="o">||</span> <span class="nx">col</span><span class="p">;</span> <span class="p">}).</span><span class="nx">join</span><span class="p">(</span><span class="s1">&#39;_&#39;</span><span class="p">)</span> <span class="o">+</span> <span class="s1">&#39;_&#39;</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="k">return</span> <span class="k">this</span><span class="p">.</span><span class="nx">_addCommand</span><span class="p">(</span><span class="nx">type</span><span class="p">,</span> <span class="p">{</span><span class="nx">index</span><span class="o">:</span> <span class="nx">index</span><span class="p">,</span> <span class="nx">columns</span><span class="o">:</span> <span class="nx">columns</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 to the blueprint.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">_addColumn</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">name</span><span class="p">,</span> <span class="nx">parameters</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">name</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;A `name` must be defined to add a column&#39;</span><span class="p">);</span>
<span class="kd">var</span> <span class="nx">column</span> <span class="o">=</span> <span class="nx">_</span><span class="p">.</span><span class="nx">extend</span><span class="p">({</span><span class="nx">type</span><span class="o">:</span> <span class="nx">type</span><span class="p">,</span> <span class="nx">name</span><span class="o">:</span> <span class="nx">name</span><span class="p">},</span> <span class="nx">ChainableColumn</span><span class="p">,</span> <span class="nx">parameters</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">push</span><span class="p">(</span><span class="nx">column</span><span class="p">);</span>
<span class="k">return</span> <span class="nx">column</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 command to the blueprint.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">_addCommand</span><span class="o">:</span> <span class="kd">function</span><span class="p">(</span><span class="nx">name</span><span class="p">,</span> <span class="nx">parameters</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">command</span> <span class="o">=</span> <span class="nx">_</span><span class="p">.</span><span class="nx">extend</span><span class="p">({</span><span class="nx">name</span><span class="o">:</span> <span class="nx">name</span><span class="p">},</span> <span class="nx">parameters</span><span class="p">);</span>
<span class="k">this</span><span class="p">.</span><span class="nx">commands</span><span class="p">.</span><span class="nx">push</span><span class="p">(</span><span class="nx">command</span><span class="p">);</span>
<span class="k">return</span> <span class="nx">command</span><span class="p">;</span>
<span class="p">}</span>
<span class="p">});</span>
<span class="kd">var</span> <span class="nx">ForeignChainable</span> <span class="o">=</span> <span class="p">{</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>Sets the "column" that the current column references
as the a foreign key</p></div></div><div class="code"><div class="wrapper"> <span class="nx">references</span><span class="o">:</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">this</span><span class="p">.</span><span class="nx">isForeign</span> <span class="o">=</span> <span class="kc">true</span><span class="p">;</span>
<span class="k">this</span><span class="p">.</span><span class="nx">foreignColumn</span> <span class="o">=</span> <span class="nx">column</span> <span class="o">||</span> <span class="kc">null</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>Sets the "table" where the foreign key column is located.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">inTable</span><span class="o">:</span> <span class="kd">function</span><span class="p">(</span><span class="nx">table</span><span class="p">)</span> <span class="p">{</span>
<span class="k">this</span><span class="p">.</span><span class="nx">foreignTable</span> <span class="o">=</span> <span class="nx">table</span> <span class="o">||</span> <span class="kc">null</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>SQL command to run "onDelete"</p></div></div><div class="code"><div class="wrapper"> <span class="nx">onDelete</span><span class="o">:</span> <span class="kd">function</span><span class="p">(</span><span class="nx">command</span><span class="p">)</span> <span class="p">{</span>
<span class="k">this</span><span class="p">.</span><span class="nx">commandOnDelete</span> <span class="o">=</span> <span class="nx">command</span> <span class="o">||</span> <span class="kc">null</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>SQL command to run "onUpdate"</p></div></div><div class="code"><div class="wrapper"> <span class="nx">onUpdate</span><span class="o">:</span> <span class="kd">function</span><span class="p">(</span><span class="nx">command</span><span class="p">)</span> <span class="p">{</span>
<span class="k">this</span><span class="p">.</span><span class="nx">commandOnUpdate</span> <span class="o">=</span> <span class="nx">command</span> <span class="o">||</span> <span class="kc">null</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="kd">var</span> <span class="nx">ChainableColumn</span> <span class="o">=</span> <span class="nx">_</span><span class="p">.</span><span class="nx">extend</span><span class="p">({</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>Sets the default value for a column.
For <code>boolean</code> columns, we'll permit 'false'
to be used as default values.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">defaultTo</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">if</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="s1">&#39;boolean&#39;</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">value</span> <span class="o">===</span> <span class="s1">&#39;false&#39;</span><span class="p">)</span> <span class="nx">value</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<span class="nx">value</span> <span class="o">=</span> <span class="p">(</span><span class="nx">value</span> <span class="o">?</span> <span class="mi">1</span> <span class="o">:</span> <span class="mi">0</span><span class="p">);</span>
<span class="p">}</span>
<span class="k">this</span><span class="p">.</span><span class="nx">defaultValue</span> <span class="o">=</span> <span class="nx">value</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>Sets an integer as unsigned, is a no-op
if the column type is not an integer.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">unsigned</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">isUnsigned</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>Allows the column to contain null values.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">nullable</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">isNullable</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>Disallow the column from containing null values.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">notNull</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">isNullable</span> <span class="o">=</span> <span class="kc">false</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>Disallow the column from containing null values.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">notNullable</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">isNullable</span> <span class="o">=</span> <span class="kc">false</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>Adds an index on the specified column.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">index</span><span class="o">:</span> <span class="kd">function</span><span class="p">(</span><span class="nx">name</span><span class="p">)</span> <span class="p">{</span>
<span class="k">this</span><span class="p">.</span><span class="nx">isIndex</span> <span class="o">=</span> <span class="nx">name</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>Sets this column as the primary key.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">primary</span><span class="o">:</span> <span class="kd">function</span><span class="p">(</span><span class="nx">name</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="k">this</span><span class="p">.</span><span class="nx">autoIncrement</span><span class="p">)</span> <span class="p">{</span>
<span class="k">this</span><span class="p">.</span><span class="nx">isPrimary</span> <span class="o">=</span> <span class="nx">name</span> <span class="o">||</span> <span class="kc">true</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></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>Sets this column as unique.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">unique</span><span class="o">:</span> <span class="kd">function</span><span class="p">(</span><span class="nx">name</span><span class="p">)</span> <span class="p">{</span>
<span class="k">this</span><span class="p">.</span><span class="nx">isUnique</span> <span class="o">=</span> <span class="nx">name</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>Sets the column to be inserted after another,
used in MySql alter tables.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">after</span><span class="o">:</span> <span class="kd">function</span><span class="p">(</span><span class="nx">name</span><span class="p">)</span> <span class="p">{</span>
<span class="k">this</span><span class="p">.</span><span class="nx">isAfter</span> <span class="o">=</span> <span class="nx">name</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>Adds a comment to this column.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">comment</span><span class="o">:</span> <span class="kd">function</span><span class="p">(</span><span class="nx">comment</span><span class="p">)</span> <span class="p">{</span>
<span class="k">this</span><span class="p">.</span><span class="nx">isCommented</span> <span class="o">=</span> <span class="nx">comment</span> <span class="o">||</span> <span class="kc">null</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">ForeignChainable</span><span class="p">);</span>
<span class="nx">exports</span><span class="p">.</span><span class="nx">SchemaBuilder</span> <span class="o">=</span> <span class="nx">SchemaBuilder</span><span class="p">;</span></div></div></div></div></body></html>