graph-common
Version:
Open Graph API core js lib
207 lines (141 loc) • 8.69 kB
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 …</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">¶</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> -></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> -></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> -></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> -></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) -> callback(data))</span>
<span class="hljs-title">update</span>: <span class="hljs-params">(query, callback)</span> -></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> -></span>
<span class="hljs-attribute">model</span>: <span class="hljs-function"><span class="hljs-params">(args...)</span> -></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> -></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> -></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> -></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>