Files
habitica/documentation/docs/group.html
T
2013-09-26 18:10:28 -04:00

166 lines
4.8 KiB
HTML

<!DOCTYPE html>
<html>
<head>
<title>group.js</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="group.html">
group.js
</a>
<a class="source" href="user.html">
user.js
</a>
</div>
</li>
</ul>
<ul class="sections">
<li id="title">
<div class="annotation">
<h1>group.js</h1>
</div>
</li>
<li id="section-1">
<div class="annotation">
<div class="pilwrap ">
<a class="pilcrow" href="#section-1">&#182;</a>
</div>
</div>
<div class="content"><div class='highlight'><pre><span class="keyword">var</span> mongoose = require(<span class="string">"mongoose"</span>);
<span class="keyword">var</span> Schema = mongoose.Schema;
<span class="keyword">var</span> helpers = require(<span class="string">'habitrpg-shared/script/helpers'</span>);
<span class="keyword">var</span> _ = require(<span class="string">'lodash'</span>);
<span class="keyword">var</span> GroupSchema = <span class="keyword">new</span> Schema({
_id: {type: String, <span class="string">'default'</span>: helpers.uuid},
name: String,
description: String,
leader: {
type: String,
ref: <span class="string">'User'</span>
},
members: [
{
type: String,
ref: <span class="string">'User'</span>
}
],
invites: [
{
type: String,
ref: <span class="string">'User'</span>
}
],
type: {
type: String,
<span class="string">"enum"</span>: [<span class="string">'guild'</span>, <span class="string">'party'</span>]
},
privacy: {
type: String,
<span class="string">"enum"</span>: [<span class="string">'private'</span>, <span class="string">'public'</span>]
},
_v: {
Number: Number,
<span class="string">'default'</span>: <span class="number">0</span>
},
websites: Array,
chat: Array,
<span class="comment">/*
# [{
# timestamp: Date
# user: String
# text: String
# contributor: String
# uuid: String
# id: String
# }]
*/</span>
balance: Number,
logo: String,
leaderMessage: String
}, {strict: <span class="string">'throw'</span>});
<span class="comment">/**
* Derby duplicated stuff. This is a temporary solution, once we're completely off derby we'll run an mongo migration
* to remove duplicates, then take these fucntions out
*/</span>
<span class="function"><span class="keyword">function</span> <span class="title">removeDuplicates</span><span class="params">(doc)</span>{</span></pre></div></div>
</li>
<li id="section-2">
<div class="annotation">
<div class="pilwrap ">
<a class="pilcrow" href="#section-2">&#182;</a>
</div>
<p>Remove duplicate members</p>
</div>
<div class="content"><div class='highlight'><pre> <span class="keyword">if</span> (doc.members) {
<span class="keyword">var</span> uniqMembers = _.uniq(doc.members);
<span class="keyword">if</span> (uniqMembers.length != doc.members.length) {
doc.members = uniqMembers;
}
}
<span class="keyword">if</span> (doc.websites) {
<span class="keyword">var</span> uniqWebsites = _.uniq(doc.websites);
<span class="keyword">if</span> (uniqWebsites.length != doc.websites.length) {
doc.websites = uniqWebsites;
}
console.log(doc.websites);
}
}
GroupSchema.pre(<span class="string">'save'</span>, <span class="keyword">function</span>(next){
removeDuplicates(<span class="keyword">this</span>);
next();
})
GroupSchema.methods.toJSON = <span class="keyword">function</span>(){
<span class="keyword">var</span> doc = <span class="keyword">this</span>.toObject();
removeDuplicates(doc);
<span class="keyword">return</span> doc;
}
module.exports.schema = GroupSchema;
module.exports.model = mongoose.model(<span class="string">"Group"</span>, GroupSchema);</pre></div></div>
</li>
</ul>
</div>
</body>
</html>