fixes #6702
parent
6bb62a4728
commit
1e3cdc99ac
@ -0,0 +1,62 @@
|
||||
'use strict';
|
||||
|
||||
var db = require('../../database');
|
||||
|
||||
var async = require('async');
|
||||
var batch = require('../../batch');
|
||||
var user = require('../../user');
|
||||
|
||||
module.exports = {
|
||||
name: 'Record first entry in username/email history',
|
||||
timestamp: Date.UTC(2018, 7, 28),
|
||||
method: function (callback) {
|
||||
batch.processSortedSet('users:joindate', function (ids, next) {
|
||||
async.each(ids, function (uid, next) {
|
||||
async.parallel([
|
||||
function (next) {
|
||||
// Username
|
||||
async.waterfall([
|
||||
async.apply(db.sortedSetCard, 'user:' + uid + ':usernames'),
|
||||
(count, next) => {
|
||||
if (count > 0) {
|
||||
// User has changed their username before, no record of original username, skip.
|
||||
return setImmediate(next, null, null);
|
||||
}
|
||||
|
||||
user.getUserFields(uid, ['username', 'joindate'], next);
|
||||
},
|
||||
(userdata, next) => {
|
||||
if (!userdata) {
|
||||
return setImmediate(next);
|
||||
}
|
||||
|
||||
db.sortedSetAdd('user:' + uid + ':usernames', userdata.joindate, [userdata.username, userdata.joindate].join(':'), next);
|
||||
},
|
||||
], next);
|
||||
},
|
||||
function (next) {
|
||||
// Email
|
||||
async.waterfall([
|
||||
async.apply(db.sortedSetCard, 'user:' + uid + ':emails'),
|
||||
(count, next) => {
|
||||
if (count > 0) {
|
||||
// User has changed their email before, no record of original email, skip.
|
||||
return setImmediate(next, null, null);
|
||||
}
|
||||
|
||||
user.getUserFields(uid, ['email', 'joindate'], next);
|
||||
},
|
||||
(userdata, next) => {
|
||||
if (!userdata) {
|
||||
return setImmediate(next);
|
||||
}
|
||||
|
||||
db.sortedSetAdd('user:' + uid + ':emails', userdata.joindate, [userdata.email, userdata.joindate].join(':'), next);
|
||||
},
|
||||
], next);
|
||||
},
|
||||
], next);
|
||||
}, next);
|
||||
}, callback);
|
||||
},
|
||||
};
|
Loading…
Reference in New Issue