166 lines
4.8 KiB
HTML
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 …</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">¶</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">¶</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>
|