Merge branch 'master' into develop

isekai-main
Barış Soner Uşaklı 1 year ago
commit 85a200096c

@ -1,3 +1,36 @@
#### v3.3.3 (2023-08-19)
##### Chores
* incrementing version number - v3.3.2 (ec9dac97)
* update changelog for v3.3.2 (2ecf15c4)
* incrementing version number - v3.3.1 (151cc68f)
* incrementing version number - v3.3.0 (fc1ad70f)
* incrementing version number - v3.2.3 (b06d3e63)
* incrementing version number - v3.2.2 (758ecfcd)
* incrementing version number - v3.2.1 (20145074)
* incrementing version number - v3.2.0 (9ecac38e)
* incrementing version number - v3.1.7 (0b4e81ab)
* incrementing version number - v3.1.6 (b3a3b130)
* incrementing version number - v3.1.5 (ec19343a)
* incrementing version number - v3.1.4 (2452783c)
* incrementing version number - v3.1.3 (3b4e9d3f)
* incrementing version number - v3.1.2 (40fa3489)
* incrementing version number - v3.1.1 (40250733)
* incrementing version number - v3.1.0 (0cb386bd)
* incrementing version number - v3.0.1 (26f6ea49)
* incrementing version number - v3.0.0 (224e08cd)
##### Bug Fixes
* one more fix (51587ca3)
* one more upgrade script fix (b5d1e917)
* post preview on skins remove clearfix and floats (5a8e6af4)
##### Refactors
* add connectionTimeout to psql (90f29571)
#### v3.3.2 (2023-08-18) #### v3.3.2 (2023-08-18)
##### Chores ##### Chores

@ -2,7 +2,7 @@
"name": "nodebb", "name": "nodebb",
"license": "GPL-3.0", "license": "GPL-3.0",
"description": "NodeBB Forum", "description": "NodeBB Forum",
"version": "3.3.2", "version": "3.3.3",
"homepage": "https://www.nodebb.org", "homepage": "https://www.nodebb.org",
"repository": { "repository": {
"type": "git", "type": "git",

@ -11,36 +11,36 @@ module.exports = {
method: async function () { method: async function () {
const { progress } = this; const { progress } = this;
progress.total = await db.sortedSetCard(`chat:rooms`); const allRoomIds = await db.getSortedSetRange(`chat:rooms`, 0, -1);
await batch.processSortedSet(`chat:rooms`, async (roomIds) => {
progress.incr(roomIds.length); progress.total = allRoomIds.length;
for (const roomId of roomIds) {
await batch.processSortedSet(`chat:room:${roomId}:mids`, async (mids) => { for (const roomId of allRoomIds) {
let messageData = await db.getObjects(mids.map(mid => `message:${mid}`)); await batch.processSortedSet(`chat:room:${roomId}:mids`, async (mids) => {
messageData.forEach((m, idx) => { let messageData = await db.getObjects(mids.map(mid => `message:${mid}`));
if (m) { messageData.forEach((m, idx) => {
m.mid = parseInt(mids[idx], 10); if (m) {
} m.mid = parseInt(mids[idx], 10);
}); }
messageData = messageData.filter(Boolean);
const bulkSet = messageData.map(
msg => [`message:${msg.mid}`, { mid: msg.mid }]
);
await db.setObjectBulk(bulkSet);
await db.sortedSetAdd(
'messages:mid',
messageData.map(msg => msg.timestamp),
messageData.map(msg => msg.mid)
);
}, {
batch: 500,
}); });
} messageData = messageData.filter(Boolean);
}, {
batch: 500, const bulkSet = messageData.map(
}); msg => [`message:${msg.mid}`, { mid: msg.mid }]
);
await db.setObjectBulk(bulkSet);
await db.sortedSetAdd(
'messages:mid',
messageData.map(msg => msg.timestamp),
messageData.map(msg => msg.mid)
);
}, {
batch: 500,
});
progress.incr(1);
}
const count = await db.sortedSetCard(`messages:mid`); const count = await db.sortedSetCard(`messages:mid`);
await db.setObjectField('global', 'messageCount', count); await db.setObjectField('global', 'messageCount', count);
}, },

@ -38,47 +38,44 @@ module.exports = {
if (roomData) { if (roomData) {
const midsSeen = {}; const midsSeen = {};
const { roomId } = roomData; const { roomId } = roomData;
await batch.processSortedSet(`chat:room:${roomId}:uids`, async (uids) => { const uids = await db.getSortedSetRange(`chat:room:${roomId}:uids`, 0, -1);
for (const uid of uids) { for (const uid of uids) {
await batch.processSortedSet(`uid:${uid}:chat:room:${roomId}:mids`, async (mids) => { await batch.processSortedSet(`uid:${uid}:chat:room:${roomId}:mids`, async (mids) => {
const uniqMids = mids.filter(mid => !midsSeen.hasOwnProperty(mid)); const uniqMids = mids.filter(mid => !midsSeen.hasOwnProperty(mid));
if (!uniqMids.length) { if (!uniqMids.length) {
return; return;
} }
let messageData = await db.getObjects(uniqMids.map(mid => `message:${mid}`)); let messageData = await db.getObjects(uniqMids.map(mid => `message:${mid}`));
messageData.forEach((m, idx) => { messageData.forEach((m, idx) => {
if (m) { if (m) {
m.mid = parseInt(uniqMids[idx], 10); m.mid = parseInt(uniqMids[idx], 10);
} }
}); });
messageData = messageData.filter(Boolean); messageData = messageData.filter(Boolean);
const bulkSet = messageData.map( const bulkSet = messageData.map(
msg => [`message:${msg.mid}`, { roomId: roomId }] msg => [`message:${msg.mid}`, { roomId: roomId }]
); );
await db.setObjectBulk(bulkSet); await db.setObjectBulk(bulkSet);
await db.sortedSetAdd( await db.sortedSetAdd(
`chat:room:${roomId}:mids`, `chat:room:${roomId}:mids`,
messageData.map(m => m.timestamp), messageData.map(m => m.timestamp),
messageData.map(m => m.mid), messageData.map(m => m.mid),
); );
uniqMids.forEach((mid) => { uniqMids.forEach((mid) => {
midsSeen[mid] = 1; midsSeen[mid] = 1;
});
}, {
batch: 500,
}); });
// eslint-disable-next-line no-await-in-loop }, {
await db.deleteAll(`uid:${uid}:chat:room:${roomId}:mids`); batch: 500,
} });
progress.incr(uids.length); // eslint-disable-next-line no-await-in-loop
}, { await db.deleteAll(`uid:${uid}:chat:room:${roomId}:mids`);
batch: 500, progress.incr(1);
}); }
const userCount = await db.sortedSetCard(`chat:room:${roomId}:uids`);
await db.setObjectField(`chat:room:${roomId}`, 'userCount', userCount); await db.setObjectField(`chat:room:${roomId}`, 'userCount', uids.length);
} }
} }
}, { }, {

Loading…
Cancel
Save