knex/docs/clients/server/postgres/schemagrammar.html

90 lines
31 KiB
HTML
Raw Normal View History

2013-09-18 11:56:32 -04:00
<!DOCTYPE html><html lang="en"><head><title>clients/server/postgres/schemagrammar</title></head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0"><meta name="groc-relative-root" content="../../../"><meta name="groc-document-path" content="clients/server/postgres/schemagrammar"><meta name="groc-project-path" content="clients/server/postgres/schemagrammar.js"><link rel="stylesheet" type="text/css" media="all" href="../../../assets/style.css"><script type="text/javascript" src="../../../assets/behavior.js"></script><body><div id="meta"><div class="file-path">clients/server/postgres/schemagrammar.js</div></div><div id="document"><div class="segment"><div class="comments"><div class="wrapper"><h2 id="postgresql-schemagrammar">PostgreSQL SchemaGrammar</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;underscore&#39;</span><span class="p">);</span>
<span class="kd">var</span> <span class="nx">grammar</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;./grammar&#39;</span><span class="p">).</span><span class="nx">grammar</span><span class="p">;</span>
2013-09-17 07:15:18 -04:00
<span class="kd">var</span> <span class="nx">baseSchemaGrammar</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;../../base/schemagrammar&#39;</span><span class="p">).</span><span class="nx">baseSchemaGrammar</span><span class="p">;</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>Grammar for the schema builder.</p></div></div><div class="code"><div class="wrapper"><span class="nx">exports</span><span class="p">.</span><span class="nx">schemaGrammar</span> <span class="o">=</span> <span class="nx">_</span><span class="p">.</span><span class="nx">defaults</span><span class="p">({</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>The possible column modifiers.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">modifiers</span><span class="o">:</span> <span class="p">[</span><span class="s1">&#39;Increment&#39;</span><span class="p">,</span> <span class="s1">&#39;Nullable&#39;</span><span class="p">,</span> <span class="s1">&#39;Default&#39;</span><span class="p">],</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>Ensures the response is returned in the same format as other clients.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">handleResponse</span><span class="o">:</span> <span class="kd">function</span><span class="p">(</span><span class="nx">builder</span><span class="p">,</span> <span class="nx">resp</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">resp</span> <span class="o">=</span> <span class="nx">resp</span><span class="p">[</span><span class="mi">0</span><span class="p">];</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">builder</span><span class="p">.</span><span class="nx">type</span> <span class="o">===</span> <span class="s1">&#39;tableExists&#39;</span> <span class="o">||</span> <span class="nx">builder</span><span class="p">.</span><span class="nx">type</span> <span class="o">===</span> <span class="s1">&#39;columnExists&#39;</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="nx">resp</span><span class="p">.</span><span class="nx">rows</span><span class="p">.</span><span class="nx">length</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">;</span>
<span class="p">}</span>
<span class="k">return</span> <span class="nx">resp</span><span class="p">;</span>
<span class="p">},</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>Compile the query to determine if a table exists.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">compileTableExists</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="s1">&#39;select * from information_schema.tables where table_name = ?&#39;</span><span class="p">;</span>
<span class="p">},</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>Compile the query to determine if a column exists in a table.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">compileColumnExists</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="s1">&#39;select * from information_schema.columns where table_name = ? and column_name = ?&#39;</span><span class="p">;</span>
<span class="p">},</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>Compile a create table command.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">compileAdd</span><span class="o">:</span> <span class="kd">function</span><span class="p">(</span><span class="nx">blueprint</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">wrapTable</span><span class="p">(</span><span class="nx">blueprint</span><span class="p">);</span>
<span class="kd">var</span> <span class="nx">columns</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">prefixArray</span><span class="p">(</span><span class="s1">&#39;add column&#39;</span><span class="p">,</span> <span class="k">this</span><span class="p">.</span><span class="nx">getColumns</span><span class="p">(</span><span class="nx">blueprint</span><span class="p">));</span>
<span class="k">return</span> <span class="s1">&#39;alter table &#39;</span> <span class="o">+</span> <span class="nx">table</span> <span class="o">+</span> <span class="s1">&#39; &#39;</span> <span class="o">+</span> <span class="nx">columns</span><span class="p">.</span><span class="nx">join</span><span class="p">(</span><span class="s1">&#39;, &#39;</span><span class="p">);</span>
<span class="p">},</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>Compile a primary key command.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">compilePrimary</span><span class="o">:</span> <span class="kd">function</span><span class="p">(</span><span class="nx">blueprint</span><span class="p">,</span> <span class="nx">command</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">columns</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">columnize</span><span class="p">(</span><span class="nx">command</span><span class="p">.</span><span class="nx">columns</span><span class="p">);</span>
<span class="k">return</span> <span class="s1">&#39;alter table &#39;</span> <span class="o">+</span> <span class="k">this</span><span class="p">.</span><span class="nx">wrapTable</span><span class="p">(</span><span class="nx">blueprint</span><span class="p">)</span> <span class="o">+</span> <span class="s2">&quot; add primary key (&quot;</span> <span class="o">+</span> <span class="nx">columns</span> <span class="o">+</span> <span class="s2">&quot;)&quot;</span><span class="p">;</span>
<span class="p">},</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>Compile a unique key command.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">compileUnique</span><span class="o">:</span> <span class="kd">function</span><span class="p">(</span><span class="nx">blueprint</span><span class="p">,</span> <span class="nx">command</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">wrapTable</span><span class="p">(</span><span class="nx">blueprint</span><span class="p">);</span>
<span class="kd">var</span> <span class="nx">columns</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">columnize</span><span class="p">(</span><span class="nx">command</span><span class="p">.</span><span class="nx">columns</span><span class="p">);</span>
<span class="k">return</span> <span class="s1">&#39;alter table &#39;</span> <span class="o">+</span> <span class="nx">table</span> <span class="o">+</span> <span class="s1">&#39; add constraint &#39;</span> <span class="o">+</span> <span class="nx">command</span><span class="p">.</span><span class="nx">index</span> <span class="o">+</span> <span class="s1">&#39; unique (&#39;</span> <span class="o">+</span> <span class="nx">columns</span> <span class="o">+</span> <span class="s1">&#39;)&#39;</span><span class="p">;</span>
<span class="p">},</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>Compile a plain index key command.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">compileIndex</span><span class="o">:</span> <span class="kd">function</span><span class="p">(</span><span class="nx">blueprint</span><span class="p">,</span> <span class="nx">command</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">columns</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">columnize</span><span class="p">(</span><span class="nx">command</span><span class="p">.</span><span class="nx">columns</span><span class="p">);</span>
<span class="k">return</span> <span class="s2">&quot;create index &quot;</span> <span class="o">+</span> <span class="nx">command</span><span class="p">.</span><span class="nx">index</span> <span class="o">+</span> <span class="s2">&quot; on &quot;</span> <span class="o">+</span> <span class="k">this</span><span class="p">.</span><span class="nx">wrapTable</span><span class="p">(</span><span class="nx">blueprint</span><span class="p">)</span> <span class="o">+</span> <span class="s1">&#39; (&#39;</span> <span class="o">+</span> <span class="nx">columns</span> <span class="o">+</span> <span class="s1">&#39;)&#39;</span><span class="p">;</span>
<span class="p">},</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>Compile a drop column command.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">compileDropColumn</span><span class="o">:</span> <span class="kd">function</span><span class="p">(</span><span class="nx">blueprint</span><span class="p">,</span> <span class="nx">command</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">columns</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">prefixArray</span><span class="p">(</span><span class="s1">&#39;drop column&#39;</span><span class="p">,</span> <span class="k">this</span><span class="p">.</span><span class="nx">wrapArray</span><span class="p">(</span><span class="nx">command</span><span class="p">.</span><span class="nx">columns</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">wrapTable</span><span class="p">(</span><span class="nx">blueprint</span><span class="p">);</span>
<span class="k">return</span> <span class="s1">&#39;alter table &#39;</span> <span class="o">+</span> <span class="nx">table</span> <span class="o">+</span> <span class="s1">&#39; &#39;</span> <span class="o">+</span> <span class="nx">columns</span><span class="p">.</span><span class="nx">join</span><span class="p">(</span><span class="s1">&#39;, &#39;</span><span class="p">);</span>
<span class="p">},</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>Compile a drop primary key command.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">compileDropPrimary</span><span class="o">:</span> <span class="kd">function</span><span class="p">(</span><span class="nx">blueprint</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="nx">blueprint</span><span class="p">.</span><span class="nx">getTable</span><span class="p">();</span>
<span class="k">return</span> <span class="s1">&#39;alter table &#39;</span> <span class="o">+</span> <span class="k">this</span><span class="p">.</span><span class="nx">wrapTable</span><span class="p">(</span><span class="nx">blueprint</span><span class="p">)</span> <span class="o">+</span> <span class="s2">&quot; drop constraint &quot;</span> <span class="o">+</span> <span class="nx">table</span> <span class="o">+</span> <span class="s2">&quot;_pkey&quot;</span><span class="p">;</span>
<span class="p">},</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>Compile a drop unique key command.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">compileDropUnique</span><span class="o">:</span> <span class="kd">function</span><span class="p">(</span><span class="nx">blueprint</span><span class="p">,</span> <span class="nx">command</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">wrapTable</span><span class="p">(</span><span class="nx">blueprint</span><span class="p">);</span>
<span class="k">return</span> <span class="s2">&quot;alter table &quot;</span> <span class="o">+</span> <span class="nx">table</span> <span class="o">+</span> <span class="s2">&quot; drop constraint &quot;</span> <span class="o">+</span> <span class="nx">command</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>Compile a drop foreign key command.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">compileDropForeign</span><span class="o">:</span> <span class="kd">function</span><span class="p">(</span><span class="nx">blueprint</span><span class="p">,</span> <span class="nx">command</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">wrapTable</span><span class="p">(</span><span class="nx">blueprint</span><span class="p">);</span>
<span class="k">return</span> <span class="s2">&quot;alter table &quot;</span> <span class="o">+</span> <span class="nx">table</span> <span class="o">+</span> <span class="s2">&quot; drop constraint &quot;</span> <span class="o">+</span> <span class="nx">command</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>Compile a rename table command.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">compileRenameTable</span><span class="o">:</span> <span class="kd">function</span><span class="p">(</span><span class="nx">blueprint</span><span class="p">,</span> <span class="nx">command</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="s1">&#39;alter table &#39;</span> <span class="o">+</span> <span class="k">this</span><span class="p">.</span><span class="nx">wrapTable</span><span class="p">(</span><span class="nx">blueprint</span><span class="p">)</span> <span class="o">+</span> <span class="s1">&#39; rename to &#39;</span> <span class="o">+</span> <span class="k">this</span><span class="p">.</span><span class="nx">wrapTable</span><span class="p">(</span><span class="nx">command</span><span class="p">.</span><span class="nx">to</span><span class="p">);</span>
<span class="p">},</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>Compile a rename column command.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">compileRenameColumn</span><span class="o">:</span> <span class="kd">function</span><span class="p">(</span><span class="nx">blueprint</span><span class="p">,</span> <span class="nx">command</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="s1">&#39;alter table &#39;</span> <span class="o">+</span> <span class="k">this</span><span class="p">.</span><span class="nx">wrapTable</span><span class="p">(</span><span class="nx">blueprint</span><span class="p">)</span> <span class="o">+</span> <span class="s1">&#39; rename &#39;</span><span class="o">+</span> <span class="k">this</span><span class="p">.</span><span class="nx">wrapTable</span><span class="p">(</span><span class="nx">command</span><span class="p">.</span><span class="nx">from</span><span class="p">)</span> <span class="o">+</span> <span class="s1">&#39; to &#39;</span> <span class="o">+</span> <span class="k">this</span><span class="p">.</span><span class="nx">wrapTable</span><span class="p">(</span><span class="nx">command</span><span class="p">.</span><span class="nx">to</span><span class="p">);</span>
<span class="p">},</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>Compile a comment command.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">compileComment</span><span class="o">:</span> <span class="kd">function</span><span class="p">(</span><span class="nx">blueprint</span><span class="p">,</span> <span class="nx">command</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">sql</span> <span class="o">=</span> <span class="s1">&#39;&#39;</span><span class="p">;</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">command</span><span class="p">.</span><span class="nx">comment</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">sql</span> <span class="o">+=</span> <span class="s1">&#39;comment on table &#39;</span> <span class="o">+</span> <span class="k">this</span><span class="p">.</span><span class="nx">wrapTable</span><span class="p">(</span><span class="nx">blueprint</span><span class="p">)</span> <span class="o">+</span> <span class="s1">&#39; is &#39;</span> <span class="o">+</span> <span class="s2">&quot;&#39;&quot;</span> <span class="o">+</span> <span class="nx">command</span><span class="p">.</span><span class="nx">comment</span> <span class="o">+</span> <span class="s2">&quot;&#39;&quot;</span><span class="p">;</span>
<span class="p">}</span>
<span class="k">return</span> <span class="nx">sql</span><span class="p">;</span>
<span class="p">},</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>Compile any additional postgres specific items.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">compileAdditional</span><span class="o">:</span> <span class="kd">function</span><span class="p">(</span><span class="nx">blueprint</span><span class="p">,</span> <span class="nx">command</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">compact</span><span class="p">(</span><span class="nx">_</span><span class="p">.</span><span class="nx">map</span><span class="p">(</span><span class="nx">blueprint</span><span class="p">.</span><span class="nx">columns</span><span class="p">,</span> <span class="kd">function</span><span class="p">(</span><span class="nx">column</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">column</span><span class="p">.</span><span class="nx">isCommented</span> <span class="o">&amp;&amp;</span> <span class="nx">_</span><span class="p">.</span><span class="nx">isString</span><span class="p">(</span><span class="nx">column</span><span class="p">.</span><span class="nx">isCommented</span><span class="p">))</span> <span class="p">{</span>
<span class="k">return</span> <span class="s1">&#39;comment on column &#39;</span> <span class="o">+</span> <span class="k">this</span><span class="p">.</span><span class="nx">wrapTable</span><span class="p">(</span><span class="nx">blueprint</span><span class="p">)</span> <span class="o">+</span> <span class="s1">&#39;.&#39;</span> <span class="o">+</span> <span class="k">this</span><span class="p">.</span><span class="nx">wrap</span><span class="p">(</span><span class="nx">column</span><span class="p">.</span><span class="nx">name</span><span class="p">)</span> <span class="o">+</span> <span class="s2">&quot; is &#39;&quot;</span> <span class="o">+</span> <span class="nx">column</span><span class="p">.</span><span class="nx">isCommented</span> <span class="o">+</span> <span class="s2">&quot;&#39;&quot;</span><span class="p">;</span>
<span class="p">}</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>Create the column definition for a integer type.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">typeInteger</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="nx">column</span><span class="p">.</span><span class="nx">autoIncrement</span> <span class="o">?</span> <span class="s1">&#39;serial&#39;</span> <span class="o">:</span> <span class="s1">&#39;integer&#39;</span><span class="p">;</span>
<span class="p">},</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>Create the column definition for a tiny integer type.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">typeTinyInteger</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="s1">&#39;smallint&#39;</span><span class="p">;</span>
<span class="p">},</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>Create the column definition for a float type.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">typeFloat</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="s1">&#39;real&#39;</span><span class="p">;</span>
<span class="p">},</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>Create the column definition for a decimal type.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">typeDecimal</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="s2">&quot;decimal(&quot;</span> <span class="o">+</span> <span class="nx">column</span><span class="p">.</span><span class="nx">total</span> <span class="o">+</span> <span class="s2">&quot;, &quot;</span> <span class="o">+</span> <span class="nx">column</span><span class="p">.</span><span class="nx">places</span> <span class="o">+</span> <span class="s2">&quot;)&quot;</span><span class="p">;</span>
<span class="p">},</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>Create the column definition for a boolean type.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">typeBoolean</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="s1">&#39;boolean&#39;</span><span class="p">;</span>
<span class="p">},</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>Create the column definition for an enum type.
Using method 2 here: http://stackoverflow.com/questions/10923213/postgres-enum-data-type-or-check-constraint</p></div></div><div class="code"><div class="wrapper"> <span class="nx">typeEnum</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="s1">&#39;text check(&#39;</span> <span class="o">+</span> <span class="k">this</span><span class="p">.</span><span class="nx">wrap</span><span class="p">(</span><span class="nx">column</span><span class="p">.</span><span class="nx">name</span><span class="p">)</span> <span class="o">+</span> <span class="s2">&quot; in(&#39;&quot;</span> <span class="o">+</span> <span class="nx">column</span><span class="p">.</span><span class="nx">allowed</span><span class="p">.</span><span class="nx">join</span><span class="p">(</span><span class="s2">&quot;&#39;, &#39;&quot;</span><span class="p">)</span> <span class="o">+</span> <span class="s2">&quot;&#39;))&quot;</span><span class="p">;</span>
<span class="p">},</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>Create the column definition for a date-time type.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">typeDateTime</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="s1">&#39;timestamp&#39;</span><span class="p">;</span>
<span class="p">},</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>Create the column definition for a timestamp type.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">typeTimestamp</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="s1">&#39;timestamp&#39;</span><span class="p">;</span>
<span class="p">},</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>Create the column definition for a bit type.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">typeBit</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="nx">column</span><span class="p">.</span><span class="nx">length</span> <span class="o">!==</span> <span class="kc">false</span> <span class="o">?</span> <span class="s1">&#39;bit(&#39;</span> <span class="o">+</span> <span class="nx">column</span><span class="p">.</span><span class="nx">length</span> <span class="o">+</span> <span class="s1">&#39;)&#39;</span> <span class="o">:</span> <span class="s1">&#39;bit&#39;</span><span class="p">;</span>
<span class="p">},</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>Create the column definition for a binary type.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">typeBinary</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="s1">&#39;bytea&#39;</span><span class="p">;</span>
<span class="p">},</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>Create the column definition for a uuid type.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">typeUuid</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="s1">&#39;uuid&#39;</span><span class="p">;</span>
<span class="p">},</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>Create the column definition for a json type,
checking whether the json type is supported - falling
back to "text" if it's not.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">typeJson</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">blueprint</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="nb">parseFloat</span><span class="p">(</span><span class="nx">blueprint</span><span class="p">.</span><span class="nx">client</span><span class="p">.</span><span class="nx">version</span><span class="p">)</span> <span class="o">&gt;=</span> <span class="mf">9.2</span><span class="p">)</span> <span class="k">return</span> <span class="s1">&#39;json&#39;</span><span class="p">;</span>
<span class="k">return</span> <span class="s1">&#39;text&#39;</span><span class="p">;</span>
<span class="p">},</span></div></div></div><div class="segment"><div class="comments"><div class="wrapper"><p>Get the SQL for an auto-increment column modifier.</p></div></div><div class="code"><div class="wrapper"> <span class="nx">modifyIncrement</span><span class="o">:</span> <span class="kd">function</span><span class="p">(</span><span class="nx">blueprint</span><span class="p">,</span> <span class="nx">column</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">column</span><span class="p">.</span><span class="nx">autoIncrement</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="nx">column</span><span class="p">.</span><span class="nx">type</span> <span class="o">==</span> <span class="s1">&#39;integer&#39;</span> <span class="o">||</span> <span class="nx">column</span><span class="p">.</span><span class="nx">type</span> <span class="o">==</span> <span class="s1">&#39;bigInteger&#39;</span><span class="p">))</span> <span class="p">{</span>
<span class="k">return</span> <span class="s1">&#39; primary key not null&#39;</span><span class="p">;</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="p">},</span> <span class="nx">baseSchemaGrammar</span><span class="p">,</span> <span class="nx">grammar</span><span class="p">);</span></div></div></div></div></body></html>