UNPKG

stackato-assist

Version:

A utility library for easy assistance in getting your node app running on Stackato.

194 lines (163 loc) 37.7 kB
<!DOCTYPE html><html><head><title>index.js</title><meta http-equiv="Content-Type" content="text/html" charset="UTF-8"><link rel="stylesheet" media="all" href="./docco.css"></head><body><div id="container"><div id="background"></div><div id="jump_to">Jump To &hellip;<div id="jump_wrapper"><div id="jump_page"><a href="./index.html" class="source"><span class="file_name">README</span></a><a href="././index.js.html" class="source selected"><span class="base_path">. / </span><span class="file_name">index.js</span></a></div></div></div><table cellpadding="0" cellspacing="0"><thead><tr><th class="docs"><h1>index.js</h1><div class="filepath">./</div></th><th class="code"></th></tr></thead><tbody><tr id="section-1"><td class="docs"><div class="pilwrap"><a href="#section-1" class="pilcrow">&#182;</a></div> </td><td class="code"><div class="highlight"><pre><span class="kd">var</span> <span class="nx">mongodb</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;mongodb&#39;</span><span class="p">);</span> <span class="kd">var</span> <span class="nx">mysql</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;mysql&#39;</span><span class="p">);</span> <span class="kd">var</span> <span class="nx">redis</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s2">&quot;redis&quot;</span><span class="p">);</span> <span class="kd">var</span> <span class="nx">pg</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;pg&#39;</span><span class="p">);</span></pre></div></td></tr><tr id="section-2"><td class="docs"><div class="pilwrap"><a href="#section-2" class="pilcrow">&#182;</a></div><div class="dox"><div class="summary"><p>Utility functions</p></div><div class="body"></div></div> </td><td class="code"><div class="highlight"><pre><span class="kd">function</span> <span class="nx">has</span> <span class="p">(</span><span class="nx">obj</span><span class="p">,</span> <span class="nx">key</span><span class="p">)</span> <span class="p">{</span> <span class="k">return</span> <span class="nb">Object</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">hasOwnProperty</span><span class="p">.</span><span class="nx">call</span><span class="p">(</span><span class="nx">obj</span><span class="p">,</span> <span class="nx">key</span><span class="p">);</span> <span class="p">}</span> <span class="kd">var</span> <span class="nx">Stackato</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">opts</span><span class="p">){</span> <span class="k">this</span><span class="p">.</span><span class="nx">isStackato</span> <span class="o">=</span> <span class="p">(</span><span class="nx">process</span><span class="p">.</span><span class="nx">env</span><span class="p">.</span><span class="nx">STACKATO_APP_NAME</span><span class="p">)</span> <span class="o">?</span> <span class="kc">true</span> <span class="o">:</span> <span class="kc">false</span><span class="p">;</span></pre></div></td></tr><tr id="section-3"><td class="docs"><div class="pilwrap"><a href="#section-3" class="pilcrow">&#182;</a></div><p>Application environment helpers</p> </td><td class="code"><div class="highlight"><pre> <span class="k">this</span><span class="p">.</span><span class="nx">port</span> <span class="o">=</span> <span class="p">(</span><span class="nx">process</span><span class="p">.</span><span class="nx">env</span><span class="p">.</span><span class="nx">PORT</span><span class="p">)</span> <span class="o">?</span> <span class="nb">parseInt</span><span class="p">(</span><span class="nx">process</span><span class="p">.</span><span class="nx">env</span><span class="p">.</span><span class="nx">PORT</span><span class="p">,</span><span class="mi">10</span><span class="p">)</span> <span class="o">:</span> <span class="kc">null</span><span class="p">;</span> <span class="k">this</span><span class="p">.</span><span class="nx">host</span> <span class="o">=</span> <span class="p">(</span><span class="nx">process</span><span class="p">.</span><span class="nx">env</span><span class="p">.</span><span class="nx">VCAP_APP_HOST</span><span class="p">)</span> <span class="o">?</span> <span class="nx">process</span><span class="p">.</span><span class="nx">env</span><span class="p">.</span><span class="nx">VCAP_APP_HOST</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="nx">process</span><span class="p">.</span><span class="nx">env</span><span class="p">.</span><span class="nx">VCAP_APPLICATION</span><span class="p">){</span> <span class="k">this</span><span class="p">.</span><span class="nx">app</span> <span class="o">=</span> <span class="nx">JSON</span><span class="p">.</span><span class="nx">parse</span><span class="p">(</span><span class="nx">process</span><span class="p">.</span><span class="nx">env</span><span class="p">.</span><span class="nx">VCAP_APPLICATION</span><span class="p">);</span> <span class="k">this</span><span class="p">.</span><span class="nx">instance</span> <span class="o">=</span> <span class="nx">JSON</span><span class="p">.</span><span class="nx">parse</span><span class="p">(</span><span class="nx">process</span><span class="p">.</span><span class="nx">env</span><span class="p">.</span><span class="nx">VMC_APP_INSTANCE</span><span class="p">);</span> <span class="k">this</span><span class="p">.</span><span class="nx">services</span> <span class="o">=</span> <span class="nx">JSON</span><span class="p">.</span><span class="nx">parse</span><span class="p">(</span><span class="nx">process</span><span class="p">.</span><span class="nx">env</span><span class="p">.</span><span class="nx">VCAP_SERVICES</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">instance</span><span class="p">){</span> <span class="k">this</span><span class="p">.</span><span class="nx">sudo</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">instance</span><span class="p">.</span><span class="nx">sudo</span><span class="p">;</span> <span class="k">this</span><span class="p">.</span><span class="nx">instanceID</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">instance</span><span class="p">.</span><span class="nx">instance_id</span><span class="p">;</span> <span class="k">this</span><span class="p">.</span><span class="nx">uris</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">instance</span><span class="p">.</span><span class="nx">uris</span><span class="p">;</span> <span class="p">}</span></pre></div></td></tr><tr id="section-4"><td class="docs"><div class="pilwrap"><a href="#section-4" class="pilcrow">&#182;</a></div><p>Helpers for database services</p> </td><td class="code"><div class="highlight"><pre> <span class="k">this</span><span class="p">.</span><span class="nx">hasMongoDB</span> <span class="o">=</span> <span class="p">(</span><span class="nx">process</span><span class="p">.</span><span class="nx">env</span><span class="p">.</span><span class="nx">MONGODB_URL</span><span class="p">)</span> <span class="o">?</span> <span class="kc">true</span> <span class="o">:</span> <span class="kc">false</span><span class="p">;</span> <span class="k">this</span><span class="p">.</span><span class="nx">hasRedis</span> <span class="o">=</span> <span class="p">(</span><span class="nx">process</span><span class="p">.</span><span class="nx">env</span><span class="p">.</span><span class="nx">REDIS_URL</span><span class="p">)</span> <span class="o">?</span> <span class="kc">true</span> <span class="o">:</span> <span class="kc">false</span><span class="p">;</span> <span class="k">this</span><span class="p">.</span><span class="nx">hasMySQL</span> <span class="o">=</span> <span class="p">(</span><span class="nx">process</span><span class="p">.</span><span class="nx">env</span><span class="p">.</span><span class="nx">MYSQL_URL</span><span class="p">)</span> <span class="o">?</span> <span class="kc">true</span> <span class="o">:</span> <span class="kc">false</span><span class="p">;</span> <span class="k">this</span><span class="p">.</span><span class="nx">hasPostgreSQL</span> <span class="o">=</span> <span class="p">(</span><span class="nx">process</span><span class="p">.</span><span class="nx">env</span><span class="p">.</span><span class="nx">POSTGRESQL_URL</span><span class="p">)</span> <span class="o">?</span> <span class="kc">true</span> <span class="o">:</span> <span class="kc">false</span><span class="p">;</span> <span class="k">this</span><span class="p">.</span><span class="nx">hasHarbor</span> <span class="o">=</span> <span class="p">(</span><span class="nx">process</span><span class="p">.</span><span class="nx">env</span><span class="p">.</span><span class="nx">STACKATO_HARBOR</span><span class="p">)</span> <span class="o">?</span> <span class="kc">true</span> <span class="o">:</span> <span class="kc">false</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">hasHarbor</span><span class="p">)</span> <span class="k">this</span><span class="p">.</span><span class="nx">harborPort</span> <span class="o">=</span> <span class="nb">parseInt</span><span class="p">(</span><span class="nx">process</span><span class="p">.</span><span class="nx">env</span><span class="p">.</span><span class="nx">STACKATO_HARBOR</span><span class="p">,</span> <span class="mi">10</span><span class="p">);</span> <span class="k">if</span><span class="p">(</span><span class="nx">process</span><span class="p">.</span><span class="nx">env</span><span class="p">.</span><span class="nx">STACKATO_FILESYSTEM</span><span class="p">)</span> <span class="p">{</span> <span class="k">this</span><span class="p">.</span><span class="nx">hasFileSystem</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">fileSystemPath</span> <span class="o">=</span> <span class="nx">process</span><span class="p">.</span><span class="nx">env</span><span class="p">.</span><span class="nx">STACKATO_FILESYSTEM</span><span class="p">;</span> <span class="p">}</span> <span class="k">if</span> <span class="p">(</span><span class="nx">process</span><span class="p">.</span><span class="nx">env</span><span class="p">.</span><span class="nx">STACKATO_SERVICES</span><span class="p">){</span> <span class="k">this</span><span class="p">.</span><span class="nx">services</span> <span class="o">=</span> <span class="nx">JSON</span><span class="p">.</span><span class="nx">parse</span><span class="p">(</span><span class="nx">process</span><span class="p">.</span><span class="nx">env</span><span class="p">.</span><span class="nx">STACKATO_SERVICES</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">services</span><span class="p">){</span> <span class="k">for</span><span class="p">(</span><span class="nx">service</span> <span class="k">in</span> <span class="k">this</span><span class="p">.</span><span class="nx">services</span><span class="p">){</span></pre></div></td></tr><tr id="section-5"><td class="docs"><div class="pilwrap"><a href="#section-5" class="pilcrow">&#182;</a></div><p>If more than one of any database type <db*>_URL env is unset</p> </td><td class="code"><div class="highlight"><pre> <span class="k">if</span><span class="p">(</span><span class="nx">service</span> <span class="o">==</span> <span class="s1">&#39;mongodb&#39;</span><span class="p">)</span> <span class="k">this</span><span class="p">.</span><span class="nx">hasMongoDB</span> <span class="o">=</span> <span class="kc">true</span><span class="p">;</span> <span class="k">if</span><span class="p">(</span><span class="nx">service</span> <span class="o">==</span> <span class="s1">&#39;redis&#39;</span><span class="p">)</span> <span class="k">this</span><span class="p">.</span><span class="nx">hasRedis</span> <span class="o">=</span> <span class="kc">true</span><span class="p">;</span> <span class="k">if</span><span class="p">(</span><span class="nx">service</span> <span class="o">==</span> <span class="s1">&#39;mysql&#39;</span><span class="p">)</span> <span class="k">this</span><span class="p">.</span><span class="nx">hasMySQL</span> <span class="o">=</span> <span class="kc">true</span><span class="p">;</span> <span class="k">if</span><span class="p">(</span><span class="nx">service</span> <span class="o">==</span> <span class="s1">&#39;postgresql&#39;</span><span class="p">)</span> <span class="k">this</span><span class="p">.</span><span class="nx">hasPostgreSQL</span> <span class="o">=</span> <span class="kc">true</span><span class="p">;</span> <span class="k">if</span><span class="p">(</span><span class="nx">service</span> <span class="o">==</span> <span class="s1">&#39;filesystem&#39;</span><span class="p">)</span> <span class="k">this</span><span class="p">.</span><span class="nx">hasFileSystem</span> <span class="o">=</span> <span class="kc">true</span><span class="p">;</span> <span class="k">if</span><span class="p">(</span><span class="nx">service</span> <span class="o">==</span> <span class="s1">&#39;harbor&#39;</span><span class="p">)</span> <span class="k">this</span><span class="p">.</span><span class="nx">hasHarbor</span> <span class="o">=</span> <span class="kc">true</span><span class="p">;</span> <span class="p">}</span> <span class="p">}</span> <span class="p">}</span> <span class="p">};</span></pre></div></td></tr><tr id="section-6"><td class="docs"><div class="pilwrap"><a href="#section-6" class="pilcrow">&#182;</a></div><div class="dox"><div class="summary"><p>getService: Get a service by name</p></div><div class="body"><pre><code>Returns the service object in JSON if it exists, otherwise returns null @servicename = the user derived service name @cb = the callback function (err, service) </code></pre></div></div> </td><td class="code"><div class="highlight"><pre><span class="nx">Stackato</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">getService</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">serviceName</span><span class="p">,</span> <span class="nx">cb</span><span class="p">){</span> <span class="k">if</span><span class="p">(</span><span class="nx">has</span><span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">services</span><span class="p">,</span> <span class="nx">serviceName</span><span class="p">)){</span> <span class="k">return</span> <span class="nx">cb</span><span class="p">(</span><span class="kc">null</span><span class="p">,</span> <span class="k">this</span><span class="p">.</span><span class="nx">services</span><span class="p">[</span><span class="nx">serviceName</span><span class="p">]);</span> <span class="p">}</span><span class="k">else</span><span class="p">{</span> <span class="k">return</span> <span class="nx">cb</span><span class="p">(</span><span class="kc">null</span><span class="p">,</span> <span class="kc">null</span><span class="p">);</span> <span class="p">}</span> <span class="p">}</span></pre></div></td></tr><tr id="section-7"><td class="docs"><div class="pilwrap"><a href="#section-7" class="pilcrow">&#182;</a></div><div class="dox"><div class="summary"><p>MongoDB connection helper</p></div><div class="body"><h2>Uses the native mongodb driver</h2> <p><a href='https://github.com/mongodb/node-mongodb-native'>https://github.com/mongodb/node-mongodb-native</a></p> <p>@servicename = the user derived service name specified in the stackato.yml<br /> @opts = mongodb connection parameters (optional)<br /> @cb = the callback function when a connection has been attempted (err, client)</p></div></div> </td><td class="code"><div class="highlight"><pre><span class="nx">Stackato</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">connectMongoDB</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">serviceName</span><span class="p">,</span> <span class="nx">opts</span><span class="p">,</span> <span class="nx">cb</span><span class="p">)</span> <span class="p">{</span> <span class="kd">var</span> <span class="nx">self</span> <span class="o">=</span> <span class="k">this</span><span class="p">;</span> <span class="k">if</span><span class="p">(</span><span class="nx">opts</span> <span class="k">instanceof</span> <span class="nb">Function</span><span class="p">)</span> <span class="p">{</span> <span class="nx">cb</span> <span class="o">=</span> <span class="nx">opts</span><span class="p">;</span> <span class="nx">opts</span> <span class="o">=</span> <span class="p">{</span><span class="nx">safe</span><span class="o">:</span><span class="kc">false</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">cb</span><span class="p">){</span> <span class="k">return</span> <span class="k">new</span> <span class="nb">Error</span><span class="p">(</span><span class="s1">&#39;Last argument must be callback function&#39;</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">serviceName</span><span class="p">){</span> <span class="k">return</span> <span class="nx">cb</span><span class="p">(</span><span class="k">new</span> <span class="nb">Error</span><span class="p">(</span><span class="s1">&#39;Service name not specified&#39;</span><span class="p">));</span> <span class="p">}</span> <span class="k">if</span> <span class="p">(</span><span class="nx">has</span><span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">services</span><span class="p">,</span> <span class="nx">serviceName</span><span class="p">)){</span> <span class="kd">var</span> <span class="nx">service</span> <span class="o">=</span> <span class="nx">self</span><span class="p">.</span><span class="nx">services</span><span class="p">[</span><span class="nx">serviceName</span><span class="p">];</span> <span class="kd">var</span> <span class="nx">server</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">mongodb</span><span class="p">.</span><span class="nx">Server</span><span class="p">(</span><span class="nx">service</span><span class="p">.</span><span class="nx">host</span><span class="p">,</span> <span class="nx">service</span><span class="p">.</span><span class="nx">port</span><span class="p">,</span> <span class="nx">opts</span><span class="p">);</span> <span class="k">new</span> <span class="nx">mongodb</span><span class="p">.</span><span class="nx">Db</span><span class="p">(</span><span class="nx">service</span><span class="p">.</span><span class="nx">db</span><span class="p">,</span> <span class="nx">server</span><span class="p">,</span> <span class="nx">opts</span><span class="p">).</span><span class="nx">open</span><span class="p">(</span><span class="kd">function</span> <span class="p">(</span><span class="nx">err</span><span class="p">,</span> <span class="nx">client</span><span class="p">)</span> <span class="p">{</span> <span class="k">if</span><span class="p">(</span><span class="nx">err</span><span class="p">)</span> <span class="k">return</span> <span class="nx">cb</span><span class="p">(</span><span class="nx">err</span><span class="p">,</span> <span class="kc">null</span><span class="p">);</span> <span class="nx">client</span><span class="p">.</span><span class="nx">authenticate</span><span class="p">(</span><span class="nx">service</span><span class="p">.</span><span class="nx">username</span><span class="p">,</span> <span class="nx">service</span><span class="p">.</span><span class="nx">password</span><span class="p">,</span> <span class="kd">function</span><span class="p">(</span><span class="nx">err</span><span class="p">,</span> <span class="nx">status</span><span class="p">)</span> <span class="p">{</span> <span class="nx">cb</span><span class="p">(</span><span class="nx">err</span><span class="p">,</span> <span class="nx">client</span><span class="p">);</span> <span class="p">});</span> <span class="p">});</span> <span class="p">}</span><span class="k">else</span><span class="p">{</span> <span class="nx">cb</span><span class="p">(</span><span class="k">new</span> <span class="nb">Error</span><span class="p">(</span><span class="s1">&#39;Cannot find a service named: &#39;</span> <span class="o">+</span> <span class="nx">serviceName</span><span class="p">));</span> <span class="p">}</span> <span class="p">};</span></pre></div></td></tr><tr id="section-8"><td class="docs"><div class="pilwrap"><a href="#section-8" class="pilcrow">&#182;</a></div><div class="dox"><div class="summary"><p>Redis connection helper</p></div><div class="body"><p>Uses the ubiquitous node_redis driver: <a href='https://github.com/mranney/node_redis'>https://github.com/mranney/node_redis</a></p> <p>@servicename = the user derived servicename specified in the stackato.yml<br /> @opts = node_redis createConnection() parameters (optional)<br /> @cb = the callback function when a connection has been attempted (err, client)</p></div></div> </td><td class="code"><div class="highlight"><pre><span class="nx">Stackato</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">connectRedis</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">serviceName</span><span class="p">,</span> <span class="nx">opts</span><span class="p">,</span> <span class="nx">cb</span><span class="p">)</span> <span class="p">{</span> <span class="k">if</span><span class="p">(</span><span class="nx">opts</span> <span class="k">instanceof</span> <span class="nb">Function</span><span class="p">)</span> <span class="p">{</span> <span class="nx">cb</span> <span class="o">=</span> <span class="nx">opts</span><span class="p">;</span> <span class="nx">opts</span> <span class="o">=</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">cb</span><span class="p">){</span> <span class="k">return</span> <span class="k">new</span> <span class="nb">Error</span><span class="p">(</span><span class="s1">&#39;Last argument must be callback function&#39;</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">serviceName</span><span class="p">){</span> <span class="k">return</span> <span class="nx">cb</span><span class="p">(</span><span class="k">new</span> <span class="nb">Error</span><span class="p">(</span><span class="s1">&#39;Service name not specified&#39;</span><span class="p">));</span> <span class="p">}</span> <span class="k">if</span> <span class="p">(</span><span class="nx">has</span><span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">services</span><span class="p">,</span> <span class="nx">serviceName</span><span class="p">)){</span> <span class="kd">var</span> <span class="nx">client</span> <span class="o">=</span> <span class="nx">redis</span><span class="p">.</span><span class="nx">createClient</span><span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">services</span><span class="p">[</span><span class="nx">serviceName</span><span class="p">].</span><span class="nx">port</span><span class="p">,</span> <span class="k">this</span><span class="p">.</span><span class="nx">services</span><span class="p">[</span><span class="nx">serviceName</span><span class="p">].</span><span class="nx">host</span><span class="p">,</span> <span class="nx">opts</span><span class="p">);</span> <span class="nx">client</span><span class="p">.</span><span class="nx">on</span><span class="p">(</span><span class="s1">&#39;error&#39;</span><span class="p">,</span> <span class="kd">function</span><span class="p">(</span><span class="nx">err</span><span class="p">){</span> <span class="nx">cb</span><span class="p">(</span><span class="nx">err</span><span class="p">);</span> <span class="p">});</span> <span class="nx">client</span><span class="p">.</span><span class="nx">auth</span><span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">services</span><span class="p">[</span><span class="nx">serviceName</span><span class="p">].</span><span class="nx">password</span><span class="p">,</span> <span class="kd">function</span><span class="p">(){</span> <span class="k">return</span> <span class="nx">cb</span><span class="p">(</span><span class="kc">null</span><span class="p">,</span> <span class="nx">client</span><span class="p">);</span> <span class="p">});</span> <span class="p">}</span><span class="k">else</span><span class="p">{</span> <span class="nx">cb</span><span class="p">(</span><span class="k">new</span> <span class="nb">Error</span><span class="p">(</span><span class="s1">&#39;Cannot find a service named: &#39;</span> <span class="o">+</span> <span class="nx">serviceName</span><span class="p">));</span> <span class="p">}</span> <span class="p">};</span></pre></div></td></tr><tr id="section-9"><td class="docs"><div class="pilwrap"><a href="#section-9" class="pilcrow">&#182;</a></div><div class="dox"><div class="summary"><p>PostgreSQL connection helper</p></div><div class="body"><p>Uses the de facto node-postgres driver: <a href='https://github.com/brianc/node-postgres'>https://github.com/brianc/node-postgres</a></p> <p>@servicename = the user derived servicename specified in the stackato.yml<br /> @opts = pg defaults parameters (optional)<br /> @cb = the callback function when a connection has been attempted (err, client, node-postgres [object])</p></div></div> </td><td class="code"><div class="highlight"><pre><span class="nx">Stackato</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">connectPostgreSQL</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">serviceName</span><span class="p">,</span> <span class="nx">opts</span><span class="p">,</span> <span class="nx">cb</span><span class="p">)</span> <span class="p">{</span> <span class="k">if</span><span class="p">(</span><span class="nx">opts</span> <span class="k">instanceof</span> <span class="nb">Function</span><span class="p">)</span> <span class="p">{</span> <span class="nx">cb</span> <span class="o">=</span> <span class="nx">opts</span><span class="p">;</span> <span class="nx">opts</span> <span class="o">=</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">cb</span><span class="p">){</span> <span class="k">return</span> <span class="k">new</span> <span class="nb">Error</span><span class="p">(</span><span class="s1">&#39;Last argument must be callback function&#39;</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">serviceName</span><span class="p">){</span> <span class="k">return</span> <span class="nx">cb</span><span class="p">(</span><span class="k">new</span> <span class="nb">Error</span><span class="p">(</span><span class="s1">&#39;Service name not specified&#39;</span><span class="p">));</span> <span class="p">}</span> <span class="k">if</span> <span class="p">(</span><span class="nx">has</span><span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">services</span><span class="p">,</span> <span class="nx">serviceName</span><span class="p">)){</span></pre></div></td></tr><tr id="section-10"><td class="docs"><div class="pilwrap"><a href="#section-10" class="pilcrow">&#182;</a></div><p>make the pg object re-usable in the callback by specifying the default connection params</p> </td><td class="code"><div class="highlight"><pre> <span class="nx">pg</span><span class="p">.</span><span class="nx">defaults</span><span class="p">.</span><span class="nx">host</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">services</span><span class="p">[</span><span class="nx">serviceName</span><span class="p">].</span><span class="nx">host</span><span class="p">;</span> <span class="nx">pg</span><span class="p">.</span><span class="nx">defaults</span><span class="p">.</span><span class="nx">port</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">services</span><span class="p">[</span><span class="nx">serviceName</span><span class="p">].</span><span class="nx">port</span><span class="p">;</span> <span class="nx">pg</span><span class="p">.</span><span class="nx">defaults</span><span class="p">.</span><span class="nx">user</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">services</span><span class="p">[</span><span class="nx">serviceName</span><span class="p">].</span><span class="nx">user</span><span class="p">;</span> <span class="nx">pg</span><span class="p">.</span><span class="nx">defaults</span><span class="p">.</span><span class="nx">password</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">services</span><span class="p">[</span><span class="nx">serviceName</span><span class="p">].</span><span class="nx">password</span><span class="p">;</span> <span class="nx">pg</span><span class="p">.</span><span class="nx">defaults</span><span class="p">.</span><span class="nx">database</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">services</span><span class="p">[</span><span class="nx">serviceName</span><span class="p">].</span><span class="nx">name</span><span class="p">;</span> <span class="nx">pg</span><span class="p">.</span><span class="nx">connect</span><span class="p">(</span><span class="kd">function</span><span class="p">(</span><span class="nx">err</span><span class="p">,</span> <span class="nx">client</span><span class="p">){</span> <span class="nx">cb</span><span class="p">(</span><span class="nx">err</span><span class="p">,</span> <span class="nx">client</span><span class="p">,</span> <span class="nx">pg</span><span class="p">);</span> <span class="p">});</span> <span class="p">}</span><span class="k">else</span><span class="p">{</span> <span class="nx">cb</span><span class="p">(</span><span class="k">new</span> <span class="nb">Error</span><span class="p">(</span><span class="s1">&#39;Cannot find a service named: &#39;</span> <span class="o">+</span> <span class="nx">serviceName</span><span class="p">));</span> <span class="p">}</span> <span class="p">};</span></pre></div></td></tr><tr id="section-11"><td class="docs"><div class="pilwrap"><a href="#section-11" class="pilcrow">&#182;</a></div><div class="dox"><div class="summary"><p>MySQL connection helper</p></div><div class="body"><p>Uses the currently active mysql driver: <a href='https://github.com/felixge/node-mysql'>https://github.com/felixge/node-mysql</a></p> <p>@servicename = the user derived servicename specified in the stackato.yml<br /> @opts = <code>mysql</code> default parameters (optional)<br /> @cb = the callback function when a connection has been attempted (err, connection [object])</p></div></div> </td><td class="code"><div class="highlight"><pre><span class="nx">Stackato</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">connectMySQL</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">serviceName</span><span class="p">,</span> <span class="nx">opts</span><span class="p">,</span> <span class="nx">cb</span><span class="p">)</span> <span class="p">{</span> <span class="k">if</span><span class="p">(</span><span class="nx">opts</span> <span class="k">instanceof</span> <span class="nb">Function</span><span class="p">)</span> <span class="p">{</span> <span class="nx">cb</span> <span class="o">=</span> <span class="nx">opts</span><span class="p">;</span> <span class="nx">opts</span> <span class="o">=</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">cb</span><span class="p">){</span> <span class="k">return</span> <span class="k">new</span> <span class="nb">Error</span><span class="p">(</span><span class="s1">&#39;Last argument must be callback function&#39;</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">serviceName</span><span class="p">){</span> <span class="k">return</span> <span class="nx">cb</span><span class="p">(</span><span class="k">new</span> <span class="nb">Error</span><span class="p">(</span><span class="s1">&#39;Service name not specified&#39;</span><span class="p">));</span> <span class="p">}</span> <span class="k">if</span> <span class="p">(</span><span class="nx">has</span><span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">services</span><span class="p">,</span> <span class="nx">serviceName</span><span class="p">)){</span> <span class="kd">var</span> <span class="nx">connection</span> <span class="o">=</span> <span class="nx">mysql</span><span class="p">.</span><span class="nx">createConnection</span><span class="p">({</span> <span class="nx">host</span> <span class="o">:</span> <span class="k">this</span><span class="p">.</span><span class="nx">services</span><span class="p">[</span><span class="nx">serviceName</span><span class="p">].</span><span class="nx">host</span><span class="p">,</span> <span class="nx">port</span> <span class="o">:</span> <span class="k">this</span><span class="p">.</span><span class="nx">services</span><span class="p">[</span><span class="nx">serviceName</span><span class="p">].</span><span class="nx">port</span><span class="p">,</span> <span class="nx">user</span> <span class="o">:</span> <span class="k">this</span><span class="p">.</span><span class="nx">services</span><span class="p">[</span><span class="nx">serviceName</span><span class="p">].</span><span class="nx">user</span><span class="p">,</span> <span class="nx">password</span> <span class="o">:</span> <span class="k">this</span><span class="p">.</span><span class="nx">services</span><span class="p">[</span><span class="nx">serviceName</span><span class="p">].</span><span class="nx">password</span><span class="p">,</span> <span class="nx">database</span> <span class="o">:</span> <span class="k">this</span><span class="p">.</span><span class="nx">services</span><span class="p">[</span><span class="nx">serviceName</span><span class="p">].</span><span class="nx">name</span> <span class="p">});</span> <span class="nx">connection</span><span class="p">.</span><span class="nx">connect</span><span class="p">();</span> <span class="nx">cb</span><span class="p">(</span><span class="kc">null</span><span class="p">,</span> <span class="nx">connection</span><span class="p">);</span> <span class="p">}</span><span class="k">else</span><span class="p">{</span> <span class="nx">cb</span><span class="p">(</span><span class="k">new</span> <span class="nb">Error</span><span class="p">(</span><span class="s1">&#39;Cannot find a service named: &#39;</span> <span class="o">+</span> <span class="nx">serviceName</span><span class="p">));</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="k">new</span> <span class="nx">Stackato</span><span class="p">()</span> </pre></div></td></tr></tbody></table><div id="generated">generated Mon May 20 2013 22:52:33 GMT-0700 (PDT) </div><div id="projectname"><a href="./index.html">Stackato-Assist</a></div></div></body></html>