mirror of
https://github.com/HabitRPG/habitica.git
synced 2025-12-18 15:17:25 +01:00
v3: define migration spec and misc fixes
This commit is contained in:
@@ -7,6 +7,10 @@
|
|||||||
|
|
||||||
// It requires two environment variables: MONGODB_OLD and MONGODB_NEW
|
// It requires two environment variables: MONGODB_OLD and MONGODB_NEW
|
||||||
|
|
||||||
|
/*
|
||||||
|
tags must have a name
|
||||||
|
*/
|
||||||
|
|
||||||
console.log('Starting migrations/api_v3/users.js.');
|
console.log('Starting migrations/api_v3/users.js.');
|
||||||
|
|
||||||
import Q from 'q';
|
import Q from 'q';
|
||||||
@@ -72,9 +76,10 @@ async function processUser (_id) {
|
|||||||
|
|
||||||
newUser.tasksOrder[`${oldTask.type}s`].push(newTask._id);
|
newUser.tasksOrder[`${oldTask.type}s`].push(newTask._id);
|
||||||
|
|
||||||
// newTask.legacyId = oldTask.id;
|
let newTaskObject = newTask.toObject();
|
||||||
|
newTaskObject.legacyId = oldTask.id;
|
||||||
|
|
||||||
batchInsertTasks.insert(newTask.toObject());
|
batchInsertTasks.insert(newTaskObject);
|
||||||
});
|
});
|
||||||
|
|
||||||
await Q.all([
|
await Q.all([
|
||||||
|
|||||||
@@ -24,6 +24,9 @@ let schema = new Schema({
|
|||||||
group: {type: String, ref: 'Group', validate: [validator.isUUID, 'Invalid uuid.'], required: true},
|
group: {type: String, ref: 'Group', validate: [validator.isUUID, 'Invalid uuid.'], required: true},
|
||||||
memberCount: {type: Number, default: 1},
|
memberCount: {type: Number, default: 1},
|
||||||
prize: {type: Number, default: 0, min: 0}, // TODO no update?
|
prize: {type: Number, default: 0, min: 0}, // TODO no update?
|
||||||
|
}, {
|
||||||
|
strict: true,
|
||||||
|
minimize: false, // So empty objects are returned
|
||||||
});
|
});
|
||||||
|
|
||||||
schema.plugin(baseModel, {
|
schema.plugin(baseModel, {
|
||||||
@@ -153,6 +156,7 @@ schema.methods.addTasks = async function challengeAddTasks (tasks) {
|
|||||||
|
|
||||||
// Sync each user sequentially
|
// Sync each user sequentially
|
||||||
// TODO are we sure it's the best solution?
|
// TODO are we sure it's the best solution?
|
||||||
|
// use bulk ops? http://stackoverflow.com/questions/16726330/mongoose-mongodb-batch-insert
|
||||||
for (let memberId of membersIds) {
|
for (let memberId of membersIds) {
|
||||||
let updateTasksOrderQ = {$push: {}};
|
let updateTasksOrderQ = {$push: {}};
|
||||||
let toSave = [];
|
let toSave = [];
|
||||||
|
|||||||
@@ -13,6 +13,9 @@ import {
|
|||||||
export let schema = new mongoose.Schema({
|
export let schema = new mongoose.Schema({
|
||||||
event: {type: String, enum: ['wondercon', 'google_6mo']},
|
event: {type: String, enum: ['wondercon', 'google_6mo']},
|
||||||
user: {type: String, ref: 'User'},
|
user: {type: String, ref: 'User'},
|
||||||
|
}, {
|
||||||
|
strict: true,
|
||||||
|
minimize: false, // So empty objects are returned
|
||||||
});
|
});
|
||||||
|
|
||||||
schema.plugin(baseModel, {
|
schema.plugin(baseModel, {
|
||||||
|
|||||||
@@ -15,6 +15,9 @@ export let schema = new mongoose.Schema({
|
|||||||
lowercase: true, // TODO migrate existing to lowerCase
|
lowercase: true, // TODO migrate existing to lowerCase
|
||||||
validator: [validator.isEmail, 'Invalid email.'],
|
validator: [validator.isEmail, 'Invalid email.'],
|
||||||
},
|
},
|
||||||
|
}, {
|
||||||
|
strict: true,
|
||||||
|
minimize: false, // So empty objects are returned
|
||||||
});
|
});
|
||||||
|
|
||||||
export let model = mongoose.model('EmailUnsubscription', schema);
|
export let model = mongoose.model('EmailUnsubscription', schema);
|
||||||
|
|||||||
@@ -91,21 +91,6 @@ schema.statics.sanitizeUpdate = function sanitizeUpdate (updateObj) {
|
|||||||
// Basic fields to fetch for populating a group info
|
// Basic fields to fetch for populating a group info
|
||||||
export let basicFields = 'name type privacy';
|
export let basicFields = 'name type privacy';
|
||||||
|
|
||||||
// TODO migration
|
|
||||||
/**
|
|
||||||
* 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
|
|
||||||
*/
|
|
||||||
/* function removeDuplicates(doc){
|
|
||||||
// Remove duplicate members
|
|
||||||
if (doc.members) {
|
|
||||||
var uniqMembers = _.uniq(doc.members);
|
|
||||||
if (uniqMembers.length != doc.members.length) {
|
|
||||||
doc.members = uniqMembers;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}*/
|
|
||||||
|
|
||||||
// TODO test
|
// TODO test
|
||||||
schema.pre('remove', true, async function preRemoveGroup (next, done) {
|
schema.pre('remove', true, async function preRemoveGroup (next, done) {
|
||||||
next();
|
next();
|
||||||
|
|||||||
@@ -7,8 +7,8 @@ export let schema = new Schema({
|
|||||||
name: {type: String, required: true},
|
name: {type: String, required: true},
|
||||||
challenge: {type: String},
|
challenge: {type: String},
|
||||||
}, {
|
}, {
|
||||||
minimize: true, // So empty objects are returned
|
|
||||||
strict: true,
|
strict: true,
|
||||||
|
minimize: false, // So empty objects are returned
|
||||||
});
|
});
|
||||||
|
|
||||||
schema.plugin(baseModel, {
|
schema.plugin(baseModel, {
|
||||||
|
|||||||
@@ -115,10 +115,10 @@ export let schema = new Schema({
|
|||||||
},
|
},
|
||||||
|
|
||||||
balance: {type: Number, default: 0},
|
balance: {type: Number, default: 0},
|
||||||
// Not saved on the user TODO remove with migration
|
// Not saved on the user right now
|
||||||
/* filters: {type: Schema.Types.Mixed, default: () => {
|
filters: {type: Schema.Types.Mixed, default: () => {
|
||||||
return {};
|
return {};
|
||||||
}}, */
|
}},
|
||||||
|
|
||||||
purchased: {
|
purchased: {
|
||||||
ads: {type: Boolean, default: false},
|
ads: {type: Boolean, default: false},
|
||||||
@@ -524,7 +524,7 @@ export let schema = new Schema({
|
|||||||
},
|
},
|
||||||
}, {
|
}, {
|
||||||
strict: true,
|
strict: true,
|
||||||
minimize: false, // So empty objects are returned TODO make sure it's in every model
|
minimize: false, // So empty objects are returned
|
||||||
});
|
});
|
||||||
|
|
||||||
schema.plugin(baseModel, {
|
schema.plugin(baseModel, {
|
||||||
|
|||||||
Reference in New Issue
Block a user