mirror of
https://github.com/HabitRPG/habitica.git
synced 2025-12-17 22:57:21 +01:00
Move Chat to Model (#9703)
* Began moving group chat to separate model * Fixed lint issue * Updated delete chat with new model * Updated flag chat to support model * Updated like chat to use model * Fixed duplicate code and chat messages * Added note about concat chat * Updated clear flags to user new model * Updated more chat checks when loading get group * Fixed spell test and back save * Moved get chat to json method * Updated flagging with new chat model * Added missing await * Fixed chat user styles. Fixed spell group test * Added new model to quest chat and group plan chat * Removed extra timestamps. Added limit check for group plans * Updated tests * Synced id fields * Fixed id creation * Add meta and fixed tests * Fixed group quest accept test * Updated puppeteer * Added migration * Export vars * Updated comments
This commit is contained in:
committed by
Sabe Jones
parent
0ec1a91774
commit
7d7fe6047c
52
migrations/groups/migrate-chat.js
Normal file
52
migrations/groups/migrate-chat.js
Normal file
@@ -0,0 +1,52 @@
|
||||
// @migrationName = 'MigrateGroupChat';
|
||||
// @authorName = 'TheHollidayInn'; // in case script author needs to know when their ...
|
||||
// @authorUuid = ''; // ... own data is done
|
||||
|
||||
|
||||
/*
|
||||
* This migration move ass chat off of groups and into their own model
|
||||
*/
|
||||
|
||||
import { model as Group } from '../../website/server/models/group';
|
||||
import { model as Chat } from '../../website/server/models/chat';
|
||||
|
||||
async function moveGroupChatToModel (skip = 0) {
|
||||
const groups = await Group.find({})
|
||||
.limit(50)
|
||||
.skip(skip)
|
||||
.sort({ _id: -1 })
|
||||
.exec();
|
||||
|
||||
if (groups.length === 0) {
|
||||
console.log('End of groups');
|
||||
process.exit();
|
||||
}
|
||||
|
||||
const promises = groups.map(group => {
|
||||
const chatpromises = group.chat.map(message => {
|
||||
const newChat = new Chat();
|
||||
Object.assign(newChat, message);
|
||||
newChat._id = message.id;
|
||||
newChat.groupId = group._id;
|
||||
|
||||
return newChat.save();
|
||||
});
|
||||
|
||||
group.chat = [];
|
||||
chatpromises.push(group.save());
|
||||
|
||||
return chatpromises;
|
||||
});
|
||||
|
||||
|
||||
const reducedPromises = promises.reduce((acc, curr) => {
|
||||
acc = acc.concat(curr);
|
||||
return acc;
|
||||
}, []);
|
||||
|
||||
console.log(reducedPromises);
|
||||
await Promise.all(reducedPromises);
|
||||
moveGroupChatToModel(skip + 50);
|
||||
}
|
||||
|
||||
module.exports = moveGroupChatToModel;
|
||||
Reference in New Issue
Block a user