mirror of
https://github.com/knex/knex.git
synced 2025-08-01 21:32:11 +00:00
232 lines
60 KiB
HTML
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">'lodash'</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">'./common'</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">'./helpers'</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">'handleResponse'</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">'columns'</span><span class="p">,</span> <span class="s1">'commands'</span><span class="p">,</span> <span class="s1">'bindings'</span><span class="p">,</span> <span class="s1">'flags'</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">'SchemaBuilder'</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"><</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">'createTable'</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">'The `engine` modifier may only be used while creating a table.'</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">'The `engine` modifier may only be used while creating a table.'</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">'The `engine` modifier may only be used while creating a table.'</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">'comment'</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">'dropColumn'</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">'dropPrimary'</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">'dropUnique'</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">'dropIndex'</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">'dropForeign'</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">'primary'</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">'unique'</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">'index'</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">'renameColumn'</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">'foreign'</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">'foreignColumn'</span><span class="p">,</span> <span class="s1">'foreignTable'</span><span class="p">,</span> <span class="s1">'commandOnDelete'</span><span class="p">,</span> <span class="s1">'commandOnUpdate'</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">'integer'</span><span class="p">,</span> <span class="p">(</span><span class="nx">column</span> <span class="o">||</span> <span class="s1">'id'</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">'bigInteger'</span><span class="p">,</span> <span class="p">(</span><span class="nx">column</span> <span class="o">||</span> <span class="s1">'id'</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">'string'</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">'text'</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">'integer'</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">'bigInteger'</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">'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>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">'float'</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">'decimal'</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">'boolean'</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">'date'</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">'dateTime'</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">'time'</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">'timestamp'</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">'created_at'</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">'updated_at'</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">"enum"</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">'enum'</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">'bit'</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">'binary'</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">'json'</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">'uuid'</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">'specificType'</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">'_'</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">'_'</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">'_'</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="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">'A `name` must be defined to add a column'</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">'boolean'</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">'false'</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> |