Files
habitica/lib/app/schema.js
2012-09-26 00:19:19 -04:00

95 lines
2.2 KiB
JavaScript

// Generated by CoffeeScript 1.3.3
var content, moment, userSchema, _;
content = require('./content');
moment = require('moment');
_ = require('lodash');
userSchema = {
balance: 2,
stats: {
money: 0,
exp: 0,
lvl: 1,
hp: 50
},
items: {
itemsEnabled: false,
armor: 0,
weapon: 0
},
tasks: {},
habitIds: [],
dailyIds: [],
todoIds: [],
completedIds: [],
rewardIds: []
};
module.exports.newUserObject = function() {
var guid, newUser, task, _i, _len, _ref;
newUser = _.clone(userSchema, true);
_ref = content.defaultTasks;
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
task = _ref[_i];
guid = task.id = require('derby/node_modules/racer').uuid();
newUser.tasks[guid] = task;
switch (task.type) {
case 'habit':
newUser.habitIds.push(guid);
break;
case 'daily':
newUser.dailyIds.push(guid);
break;
case 'todo':
newUser.todoIds.push(guid);
break;
case 'reward':
newUser.rewardIds.push(guid);
}
}
return newUser;
};
module.exports.updateSchema = function(model) {
return;
return model.fetch('users', function(err, users) {
return _.each(users.get(), function(userObj) {
var daysOld, sameTasks, user, userPath;
userPath = "users." + userObj._id;
user = model.at(userPath);
if (userObj.lastCron == null) {
model.del(userPath);
return;
}
daysOld = helpers.daysBetween(new Date(), userObj.lastCron);
if (daysOld > 30) {
sameTasks = _.filter(require('./content').defaultTasks, function(defaultTask) {
var foundSame;
foundSame = _.find(userObj.tasks, function(userTask) {
return userTask.text === defaultTask.text;
});
return foundSame != null;
});
if (_.size(sameTasks) > 5) {
model.del(userPath);
return;
}
}
user.set('history', {
exp: [],
todos: []
});
return _.each(userObj.tasks, function(taskObj) {
var task;
task = user.at("tasks." + taskObj.id);
if (task.get("history")) {
return task.set("history", []);
}
});
});
});
};