UNPKG

graph-common

Version:
207 lines (141 loc) 8.69 kB
<!DOCTYPE html> <html> <head> <title>mongodb_storage.litcoffee</title> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <meta name="viewport" content="width=device-width, target-densitydpi=160dpi, initial-scale=1.0; maximum-scale=1.0; user-scalable=0;"> <link rel="stylesheet" media="all" href="docco.css" /> </head> <body> <div id="container"> <div id="background"></div> <ul id="jump_to"> <li> <a class="large" href="javascript:void(0);">Jump To &hellip;</a> <a class="small" href="javascript:void(0);">+</a> <div id="jump_wrapper"> <div id="jump_page"> <a class="source" href="bootstrap.html"> bootstrap.litcoffee </a> <a class="source" href="configuration_manager.html"> configuration_manager.litcoffee </a> <a class="source" href="echo_router.html"> echo_router.litcoffee </a> <a class="source" href="gql.html"> gql.litcoffee </a> <a class="source" href="graph.html"> graph.litcoffee </a> <a class="source" href="index.html"> index.litcoffee </a> <a class="source" href="mongodb_storage.html"> mongodb_storage.litcoffee </a> <a class="source" href="node_manager.html"> node_manager.litcoffee </a> <a class="source" href="node_schema.html"> node_schema.litcoffee </a> <a class="source" href="query.html"> query.litcoffee </a> <a class="source" href="redirect_router.html"> redirect_router.litcoffee </a> <a class="source" href="router_manager.html"> router_manager.litcoffee </a> <a class="source" href="router_schema.html"> router_schema.litcoffee </a> <a class="source" href="schema_manager.html"> schema_manager.litcoffee </a> <a class="source" href="schema_schema.html"> schema_schema.litcoffee </a> <a class="source" href="static_router.html"> static_router.litcoffee </a> <a class="source" href="storage_manager.html"> storage_manager.litcoffee </a> <a class="source" href="storage_router.html"> storage_router.litcoffee </a> </div> </li> </ul> <ul class="sections"> <li id="title"> <div class="annotation"> <h1>mongodb_storage.litcoffee</h1> </div> </li> <li id="section-1"> <div class="annotation"> <div class="pilwrap "> <a class="pilcrow" href="#section-1">&#182;</a> </div> <p>MongoDBStorage is MongoDB Graph API Storage implementation using mongoose</p> </div> <div class="content"><div class='highlight'><pre><span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">MongoDBStorage</span></span> <span class="hljs-attribute">constructor</span>: <span class="hljs-function"><span class="hljs-params">(database_uri)</span> -&gt;</span> <span class="hljs-property">@mongoose</span> = <span class="hljs-built_in">require</span>(<span class="hljs-string">'mongoose'</span>) <span class="hljs-property">@plugins</span> = <span class="hljs-attribute">uniqueValidator</span>: <span class="hljs-built_in">require</span>(<span class="hljs-string">'mongoose-unique-validator'</span>) <span class="hljs-property">@Schema</span> = <span class="hljs-property">@mongoose</span>.Schema <span class="hljs-property">@db</span> = <span class="hljs-property">@mongoose</span>.connect(database_uri) <span class="hljs-property">@connection</span> = <span class="hljs-property">@db</span>.connection <span class="hljs-attribute">apply_plugins</span>: <span class="hljs-function"><span class="hljs-params">(schema)</span> -&gt;</span> <span class="hljs-keyword">for</span> plugin_name <span class="hljs-keyword">of</span> <span class="hljs-property">@plugins</span> schema.plugin(<span class="hljs-property">@plugins</span>[plugin_name]) <span class="hljs-attribute">create</span>: <span class="hljs-function"><span class="hljs-params">(query, callback)</span> -&gt;</span> model = <span class="hljs-property">@model</span>(query.schema) object = <span class="hljs-keyword">new</span> model(query.data) object.save(callback) <span class="hljs-attribute">read</span>: <span class="hljs-function"><span class="hljs-params">(query, callback)</span> -&gt;</span> model = <span class="hljs-property">@model</span>(query.schema) search_query = query.search_query || {} conditions = search_query.conditions || {} dbquery = model.find(conditions) properties = search_query.property?.join(<span class="hljs-string">' '</span>) || <span class="hljs-literal">undefined</span> <span class="hljs-keyword">if</span> properties dbquery = dbquery.select(properties) MongoDBStorage.add_uniq_search_option(dbquery, search_query, <span class="hljs-string">'limit'</span>) MongoDBStorage.add_uniq_search_option(dbquery, search_query, <span class="hljs-string">'skip'</span>) MongoDBStorage.add_multiple_search_option(dbquery, search_query, <span class="hljs-string">'sort'</span>) MongoDBStorage.add_multiple_search_option(dbquery, search_query, <span class="hljs-string">'populate'</span>) dbquery.exec<span class="hljs-function"><span class="hljs-params">((err, data) -&gt; callback(data))</span> <span class="hljs-title">update</span>: <span class="hljs-params">(query, callback)</span> -&gt;</span> model = <span class="hljs-property">@model</span>(query.schema) <span class="hljs-attribute">delete</span>: <span class="hljs-function"><span class="hljs-params">(query, callback)</span> -&gt;</span> <span class="hljs-attribute">model</span>: <span class="hljs-function"><span class="hljs-params">(args...)</span> -&gt;</span> <span class="hljs-keyword">return</span> <span class="hljs-property">@mongoose</span>.model(args...) <span class="hljs-attribute">disconnect</span>: <span class="hljs-function"><span class="hljs-params">()</span> -&gt;</span> <span class="hljs-property">@connection</span>.close() <span class="hljs-property">@add_uniq_search_option</span>: <span class="hljs-function"><span class="hljs-params">(dbquery, search_query, option)</span> -&gt;</span> value = search_query[option] <span class="hljs-keyword">if</span> value <span class="hljs-keyword">and</span> <span class="hljs-keyword">typeof</span> value == <span class="hljs-string">'array'</span> value = value.pop() <span class="hljs-keyword">if</span> value dbquery = dbquery[option](value) <span class="hljs-keyword">return</span> dbquery <span class="hljs-property">@add_multiple_search_option</span>: <span class="hljs-function"><span class="hljs-params">(dbquery, search_query, option)</span> -&gt;</span> values = search_query[option] <span class="hljs-keyword">if</span> values <span class="hljs-keyword">and</span> <span class="hljs-keyword">typeof</span> values == <span class="hljs-string">'string'</span> values = [values] <span class="hljs-keyword">if</span> values dbquery = dbquery[option](value) <span class="hljs-keyword">for</span> value <span class="hljs-keyword">in</span> values <span class="hljs-keyword">return</span> dbquery <span class="hljs-built_in">module</span>.<span class="hljs-built_in">exports</span> = MongoDBStorage</pre></div></div> </li> </ul> </div> </body> </html>