mirror of
https://github.com/knex/knex.git
synced 2025-12-16 09:38:25 +00:00
35 lines
7.4 KiB
HTML
35 lines
7.4 KiB
HTML
<!DOCTYPE html><html lang="en"><head><title>lib/schema/compiler</title></head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0"><meta name="groc-relative-root" content="../../"><meta name="groc-document-path" content="lib/schema/compiler"><meta name="groc-project-path" content="lib/schema/compiler.js"><link rel="stylesheet" type="text/css" media="all" href="../../assets/style.css"><script type="text/javascript" src="../../assets/behavior.js"></script><body><div id="meta"><div class="file-path">lib/schema/compiler.js</div></div><div id="document"><div class="segment"><div class="comments "><div class="wrapper"><p>The "SchemaCompiler" takes all of the query statements which have been
|
|
gathered in the "SchemaBuilder" and turns them into an array of
|
|
properly formatted / bound query strings.</p></div></div><div class="code"><div class="wrapper"><span class="kd">function</span> <span class="nx">SchemaCompiler</span><span class="p">(</span><span class="nx">builder</span><span class="p">)</span> <span class="p">{</span>
|
|
<span class="k">this</span><span class="p">.</span><span class="nx">builder</span> <span class="o">=</span> <span class="nx">builder</span><span class="p">;</span>
|
|
<span class="k">this</span><span class="p">.</span><span class="nx">initCompiler</span><span class="p">();</span>
|
|
<span class="p">}</span>
|
|
|
|
<span class="kd">function</span> <span class="nx">buildTable</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="kd">function</span><span class="p">(</span><span class="nx">tableName</span><span class="p">,</span> <span class="nx">fn</span><span class="p">)</span> <span class="p">{</span>
|
|
<span class="kd">var</span> <span class="nx">TableBuilder</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">client</span><span class="p">.</span><span class="nx">TableBuilder</span><span class="p">;</span>
|
|
<span class="kd">var</span> <span class="nx">sql</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">TableBuilder</span><span class="p">(</span><span class="nx">type</span><span class="p">,</span> <span class="nx">tableName</span><span class="p">,</span> <span class="nx">fn</span><span class="p">).</span><span class="nx">toSQL</span><span class="p">();</span>
|
|
<span class="k">for</span> <span class="p">(</span><span class="kd">var</span> <span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> <span class="nx">l</span> <span class="o">=</span> <span class="nx">sql</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span> <span class="o"><</span> <span class="nx">l</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
|
|
<span class="k">this</span><span class="p">.</span><span class="nx">sequence</span><span class="p">.</span><span class="nx">push</span><span class="p">(</span><span class="nx">sql</span><span class="p">[</span><span class="nx">i</span><span class="p">]);</span>
|
|
<span class="p">}</span>
|
|
<span class="p">};</span>
|
|
<span class="p">}</span>
|
|
|
|
<span class="nx">SchemaCompiler</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">createTable</span> <span class="o">=</span> <span class="nx">buildTable</span><span class="p">(</span><span class="s1">'create'</span><span class="p">);</span>
|
|
<span class="nx">SchemaCompiler</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">alterTable</span> <span class="o">=</span> <span class="nx">buildTable</span><span class="p">(</span><span class="s1">'alter'</span><span class="p">);</span>
|
|
<span class="nx">SchemaCompiler</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">dropTable</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">tableName</span><span class="p">)</span> <span class="p">{</span>
|
|
<span class="k">this</span><span class="p">.</span><span class="nx">pushQuery</span><span class="p">(</span><span class="s1">'drop table '</span> <span class="o">+</span> <span class="k">this</span><span class="p">.</span><span class="nx">formatter</span><span class="p">.</span><span class="nx">wrap</span><span class="p">(</span><span class="nx">tableName</span><span class="p">));</span>
|
|
<span class="p">};</span>
|
|
<span class="nx">SchemaCompiler</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">dropTableIfExists</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">tableName</span><span class="p">)</span> <span class="p">{</span>
|
|
<span class="k">this</span><span class="p">.</span><span class="nx">pushQuery</span><span class="p">(</span><span class="s1">'drop table if exists '</span> <span class="o">+</span> <span class="k">this</span><span class="p">.</span><span class="nx">formatter</span><span class="p">.</span><span class="nx">wrap</span><span class="p">(</span><span class="nx">tableName</span><span class="p">));</span>
|
|
<span class="p">};</span>
|
|
<span class="nx">SchemaCompiler</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">toSQL</span> <span class="o">=</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
|
|
<span class="kd">var</span> <span class="nx">sequence</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">builder</span><span class="p">.</span><span class="nx">_sequence</span><span class="p">;</span>
|
|
<span class="k">for</span> <span class="p">(</span><span class="kd">var</span> <span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> <span class="nx">l</span> <span class="o">=</span> <span class="nx">sequence</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span> <span class="o"><</span> <span class="nx">l</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
|
|
<span class="kd">var</span> <span class="nx">query</span> <span class="o">=</span> <span class="nx">sequence</span><span class="p">[</span><span class="nx">i</span><span class="p">];</span>
|
|
<span class="k">this</span><span class="p">[</span><span class="nx">query</span><span class="p">.</span><span class="nx">method</span><span class="p">].</span><span class="nx">apply</span><span class="p">(</span><span class="k">this</span><span class="p">,</span> <span class="nx">query</span><span class="p">.</span><span class="nx">args</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">sequence</span><span class="p">;</span>
|
|
<span class="p">};</span>
|
|
|
|
<span class="nx">module</span><span class="p">.</span><span class="nx">exports</span> <span class="o">=</span> <span class="nx">SchemaCompiler</span><span class="p">;</span></div></div></div></div></body></html> |